проблема переписывания модов - PullRequest
2 голосов
/ 10 февраля 2010

Как получается, что это работает:

RewriteEngine On

RewriteCond %{REQUEST_URI} ^/book/blabla$
RewriteRule ^.+$ /book/?name=blabla [NC,L]

А вот этого нет?

RewriteEngine On

RewriteRule ^/book/blabla$ /book/?name=blabla [NC,L]

Я много чего пробовал, но меня это смущает.

1 Ответ

2 голосов
/ 10 февраля 2010

Если вы используете mod_rewrite в файле .htaccess, контекстный префикс для каждого каталога пути URL удаляется перед проверкой правил:

Как вы увидите ниже, RewriteRule может использоваться в конфигурационных файлах для каждого каталога ( .htaccess ). В таком случае он будет действовать локально, удаляя префикс локального каталога перед обработкой, и применяя правила перезаписи только к оставшейся части.

Это означает, что если вы используете mod_rewrite в файле .htaccess в корневом каталоге (/), этот префикс пути удаляется из пути URL. Так что /book/blabla уменьшается до book/blabla. Ваш шаблон правил должен отражать это поведение:

RewriteRule ^book/blabla$ /book/?name=blabla [NC,L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...