パターンはできるだけ具体的にする必要があります。したがって、次のルールを試してください:
# 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]
ここでは[^/]+
を使用します (/
を除く1つ以上の任意の文字 )。ただし、特定の文字のみを許可する場合は、それをパターンに反映する必要があります(たとえば、webdestroyaの提案を参照してください)。
また、明確なURIを使用していることも確認する必要があります。ルールについて考える前に、よく練られたURI構造を開発する必要があります。ご存知のとおり、クールなURIは変更されません 。