Debes hacer que tus patrones sean lo más específicos posible. Así que prueba estas reglas:
# 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]
Aquí uso [^/]+
(uno o más caracteres arbitrarios excepto /
). Pero si solo desea permitir caracteres específicos, debe reflejar eso en sus patrones (consulte, por ejemplo, la propuesta de webdestroya).
Y también debe asegurarse de utilizar URI inequívocos. Debe desarrollar una estructura de URI bien elaborada antes de pensar en las reglas. Ya sabes, Las URI geniales no cambian .