Что-то не так с моим правилом mod_rewrite? - PullRequest
0 голосов
/ 15 ноября 2011

Я использую это:

RewriteRule ^(.+)/?$ index.php?slug=$1 [L]

чтобы изменить то, что видит пользователь:

example.com/hello/world

к тому, что сервер видит как:

example.com/index.php?slug=hello/world

Но это не работает. Я знаю, что сам .htaccess работает, потому что я пробовал другие, более простые правила, которые я использовал в других местах, и они работают нормально. Что-то не так с этим?

Спасибо!

1 Ответ

1 голос
/ 15 ноября 2011

Не обрабатывать правило, если файл или каталог действительно существует. Это предотвратит действие правила на index.php и вызовет цикл перезаписи. Это также предотвратит влияние статического содержимого (css, js, images).

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/?$ index.php?slug=$1 [L,QSA]

Примечание. По комментариям добавляется [QSA], чтобы обеспечить сохранение существующих параметров строки запроса при перезаписи.

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