Vous devez rendre vos modèles aussi spécifiques que possible. Essayez donc ces règles :
# stop rewriting process if request can be mapped to file or directory
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
# get user pages
RewriteRule ^([^/]+)\.html$ profile.php?user=$1 [L,QSA]
# get paces
RewriteRule ^([^/]+)/([^/]+)/$ place.php?state=$1&city=$2 [L,QSA]
Ici j'utilise [^/]+
(un ou plusieurs caractères arbitraires sauf /
). Mais si vous ne souhaitez autoriser que des caractères spécifiques, vous devez en tenir compte dans vos modèles (voir par exemple la proposition de webdestroya).
Et vous devez également vous assurer que vous utilisez des URI sans ambiguïté. Vous devez développer une structure d'URI bien conçue avant de penser aux règles. Vous savez, Les URI sympas ne changent pas .