Я хочу использовать режим перезаписи, чтобы отобразить следующее: mydomain.com/Florida/Tampa/ вместо mydomain.com/place.php?state=Florida&city=Tampa
Я уже сделал это: (так как я думаю, что это может иметь значение!) Mydomain.com/[name].html вместо mydomain.com/profile?user=[name]
Вот код!
Options +FollowSymLinks Options +Indexes RewriteEngine On RewriteBase / RewriteCond %{SCRIPT_FILENAME}! !-f RewriteCond %{SCRIPT_FILENAME}! !-d RewriteRule (.*).html profile.php?user=$1 [QSA.L]
Вы должны сделать ваши шаблоны максимально конкретными. Поэтому попробуйте следующие правила:
# 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]
Здесь я использую [^/]+
(один или несколько произвольных символов, кроме /
). Но если вы хотите только разрешить определенные символы, вы должны отразить это в своих шаблонах (см., Например, предложение webdestroya).
И вы также должны убедиться, что используете однозначные URI. Вы должны разработать хорошо сформированную структуру URI, прежде чем думать о правилах. Вы знаете, Cool URI не меняются .
Добавить:
RewriteRule ^([a-zA-Z]+)/([a-zA-Z]+)/ place.php?state=$1&city=$2 [L,QSA]