MOD_REWRITE HELP!

Я хочу использовать режим перезаписи, чтобы отобразить следующее: 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]