Sie sollten Ihre Muster so spezifisch wie möglich gestalten. Versuchen Sie also diese Regeln:
# 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]
Hier verwende ich [^/]+
(ein oder mehrere beliebige Zeichen außer /
). Wenn Sie jedoch nur bestimmte Zeichen zulassen möchten, sollten Sie dies in Ihren Mustern widerspiegeln (siehe zum Beispiel den Vorschlag von webdestroya).
Und Sie sollten auch darauf achten, dass Sie eindeutige URIs verwenden. Sie sollten eine gut ausgearbeitete URI-Struktur entwickeln, bevor Sie über Regeln nachdenken. Wissen Sie, Coole URIs ändern sich nicht .