ho trovato la soluzione, la posto perchè potrebbe essere utile a qualcuno:

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.* - [L]

RewriteRule ^([0-9A-Za-z-]+)\.html gen.php?link=$1.html [L]

in poche parole la prima parte serve a dire: se il file esiste fisicamente allora prendi quello, se non esiste allora applica la regola

ciao