Digamos que sus otras páginas tenían URL específicas con las que podía verificar, lo siguiente debería ayudar.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-_]*)$ /profile.php?user=$1 [L]
Esto ayuda a mantener las URL actuales, al tiempo que permite las URL de acceso directo del usuario. Además, RewriteRule
solo coincidirá con las URL que no contengan un /
, que ayudará a proteger contra redireccionamientos no deseados. Entonces,
/i-am-a-user -> MATCHES
/i_am_a_user -> MATCHES
/i-!am-a-user -> NOT MATCHED
/i.am.a.user -> NOT MATCHED
/i.am.a.user/ -> NOT MATCHED
/some/page/ -> NOT MATCHED
/doesnotexist.php -> NOT MATCHED
/doesnotexist.html -> NOT MATCHED
Espero que ayude.
EDITAR
Actualicé las reglas anteriores para que los archivos/directorios reales no se redirijan y me aseguré de que cualquier .php
o .html
el archivo no se envía a profile.php
tampoco.