Сценарий htaccess - НЕ разрешать перезапись для определенного файла - PullRequest
0 голосов
/ 19 февраля 2011

У меня есть следующий скрипт htaccess:

RewriteEngine on
RewriteBase /
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule  ^(test|test1).*  - [L]

Я ожидал, что: http://localhost/something.php перенаправит на index.php

True.

Я ожидал, что http://localhost/test.php НЕ перенаправит на index.php

False.(Я также получаю перенаправление).

Что мне не хватает?

Большое спасибо

1 Ответ

2 голосов
/ 20 февраля 2011

Правила перезаписи всегда оцениваются в указанном порядке.Таким образом, оба ваших URL будут соответствовать RewriteRule в строке 3. Другие правила не будут оценены.Чтобы ваши тестовые файлы не были переписаны, вы можете поместить последние три правила в верхнюю часть (т. Е. Непосредственно под командой RewriteBase).

Но, в конце концов, вам, вероятно, следует использовать RewriteConds чаще, например, так:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !^(test|test1)
# the following RewriteCond is probably redundant because of the prior -f check
RewriteCond %{REQUEST_FILENAME} !\.(js|ico|txt|gif|jpg|png|css)$

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