mod_rewrite игнорирует [L] - PullRequest
       12

mod_rewrite игнорирует [L]

0 голосов
/ 19 января 2010

Я хочу иметь возможность переписать это

http://localhost/.../identicon/f528764d624db129b32c21fbca0cb8d6.png

до

http://localhost/.../identicon.php?hash=f528764d624db129b32c21fbca0cb8d6

поэтому я добавляю в /.../.htaccess, вот оно:

RewriteEngine On
RewriteRule ^resource/ - [L]
RewriteRule ^identicon/(.+)\.png$ identicon.php?hash=$1 [QSA,L]
RewriteRule ^(.*)$ index.php?t=$1 [QSA,L]

Что по какой-то причине не работает, потому что оно перенаправляет его на index.php? T = identificon.php; хотя флаг L установлен! Почему?

Ответы [ 2 ]

2 голосов
/ 19 января 2010

Добавить условие к последнему правилу, чтобы исключить запросы, которые могут быть сопоставлены с существующими файлами:

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

Это необходимо, поскольку флаг L создает внутреннее перенаправление с новым URL-адресом в качестве URL-адреса запроса:

Помните, однако, что если RewriteRule генерирует внутреннее перенаправление (что часто происходит при перезаписи в контексте для каждого каталога), это приведет к повторному отклонению запроса и к повторной обработке, начиная с первого RewriteRule .

0 голосов
/ 19 января 2010

(неправильный ответ; оставлено для справки)


Я только что понял, в чем может быть проблема - это то, что мешало мне долгое время.

В зависимости от настроек вашего сервера, он вполне может интерпретировать identicon/xxx.png как запрос к identicon.php/xxx.png, предполагая, что расширение PHP - это то, что вам нужно. Попробуйте перейти на /index вместо /index.php - если он загружает файл PHP, это проблема, которая вас касается.

Это опция MultiViews Apache, и она глупая, но должна быть специально включена. Перейдите в файл конфигурации своего сайта, посмотрите, где он включен, и удалите его.

Если у вас нет полного контроля над конфигурацией вашего сервера, в .htaccess может работать следующее (зависит, как ни странно, от конфигурации вашего сервера).

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