Digamos que suas outras páginas tenham URLs específicos que você possa verificar, o seguinte deve ajudar.
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9-_]*)$ /profile.php?user=$1 [L]
Isso ajuda a manter os URLs atuais, enquanto permite os URLs de atalho do usuário. Além disso, a
RewriteRule
corresponderá apenas a URLs que não contenham um /
, que ajudará a proteger contra redirecionamentos não intencionais. Então, /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 ajude.
EDITAR
Atualizei as regras acima para que os arquivos/diretórios reais não sejam redirecionados, além de garantir que qualquer arquivo
.php
ou .html
arquivo não é enviado para profile.php
qualquer.