переписать мод маскирования URL htaccess - PullRequest
0 голосов
/ 11 июля 2011

Я сделал некоторую маскировку URL, и все это работает очень хорошо.У меня есть одна проблема, которую я пытаюсь решить сейчас:

RewriteRule ^(.*)/(.*)/clubs/(.*)/$ teams.php?competition=$1&season=$2&teamid=$3

с вышеупомянутым, я могу получить доступ к той же странице 2 способами, www.domain.com/premier-league/2010-2011/arsenal/ и www.domain.com?competition=premier-league&season=2010-2011&teamid=arsenal

есть ли способв моем правиле перезаписи я могу перенаправить URL (в идеале 301), кто-то делает это неопрятным способом "www.domain.com?competition=premier-league&season=2010-2011&teamid=arsenal"?

Заранее спасибо

1 Ответ

0 голосов
/ 11 июля 2011

Если после этого добавить еще одно правило перезаписи, соответствующее вашему «обратному» шаблону, и пометить оба из них как правило [L] ast, это может сработать.Сначала я переписываю URL, чтобы включить строку запроса, и [C] присоединяю ее к следующему правилу.После этого мы [R] редактируем браузер.

RewriteRule ^(.)/(.)/clubs/(.*)/$ teams.php?competition=$1&season=$2&teamid=$3 [L]
RewriteRule ^(.+) $1%{QUERY_STRING} [C]
RewriteRule ^teams.php?competition=([a-zA-Z0-9]+)&season=([a-zA-Z0-9]+)&teamid=([a-zA-Z0-9]+)$ $1/$2/clubs/$3/ [R=301,L]

Примечание. Я не проверял ни это, ни регулярное выражение второго правила.Возможно, нужно немного скорректировать диапазоны символов.Кроме того, я не проверял переписывание строки запроса во втором правиле.

Редактирование: см. Здесь некоторые примеры использования mod_rewrite: http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...