RewriteRule в htaccess и флаг [L]

sozon
На сайте с 04.09.2006
Offline
90
11833


RewriteEngine on
Options +FollowSymlinks
RewriteBase /

#главная
RewriteRule ^$ router.php?cont=index [L]
# отрасль
RewriteRule ^([a-z]+)/$ router.php?cont=otr&otr=$1 [L]

RewriteRule ^(.*)$ router.php?cont=404&tmp=$1 [L]

Должно получиться следующее:

Как только URL соответствует какому либо правилу, router.php передаются необходимые параметры и проверка остальных правил не производится (за это отвечает флаг [L]).

Но на практике проверка производится до конца в любом случае.

Почему не срабатывает [L]? Помогите разобраться.

grey109
На сайте с 15.06.2005
Offline
180
#1
sozon:
RewriteRule ^$ router.php?cont=index [L]

Тут вроде ошибка в патерне. Должно быть что-то типа:

RewriteRule ^index.php$ router.php?cont=index [L]

В остальном ошибок не заметил.

sozon
На сайте с 04.09.2006
Offline
90
#2
grey109:
Тут вроде ошибка в патерне. Должно быть что-то типа:

RewriteRule ^index.php$ router.php?cont=index [L]

В остальном ошибок не заметил.

Нет, тут нет ошибки, да дело даже не в этом.

Проблема именно в том, чтобы остановить проверку условий как только хоть одно совпадение было найдено.

Не понимаю почему [L] не работает.

Думал может у меня настройки апача не те, залил на хостинг, там та же картина.

d1ma
На сайте с 18.03.2007
Offline
102
#3

при обработки запроса "/" для выдачи "router.php?cont=index" происходит проверка всех условий относительно "router.php?cont=index" (как отдельного запроса), и при этом срабатывает последнее правило (для второй схемы аналогично)

например это можно исправить добавив перед последим RewriteRule:


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

тогда при обработке router.php запросов оно не будет срабатывать

sozon
На сайте с 04.09.2006
Offline
90
#4

Да, точно в этом и было все дело.

Огромное спасибо.

d1ma
На сайте с 18.03.2007
Offline
102
#5

Ещё может понадобиться проверка симлинков:


RewriteCond %{REQUEST_FILENAME} !-l

добавить в том же месте.

Пожалуйста :)

sozon
На сайте с 04.09.2006
Offline
90
#6

Мне кажется не совсем правильной логика работы (когда уже преобразованный URL еще раз обрабатывается). Может конечно я чего то недопонимаю...

Наверное должен быть какой то способ запретить повторную проверку, а то получается, двойная нагрузка.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий