Случайный альбом
Flash Point 2011
Некультурный отдых - Flash Point 2011
Изображений: 77
Косово поле-2011
Некультурный отдых - Косово поле-2011
Изображений: 214
Меточки:
Нацарапано:  23.11.2009
Категория: Работа
Метки новости:
В mod_rewrite есть одни грабли, на которые наступали все кому не лень уже стопицот раз: зараза просматривает список правил раз за разом, до тех пор пока URL удается хоть как-то поменять.

Зачастую в результате получаеются и бесконечные циклы (типа добавления расширения — оно прибавляется снова и снова, ежели не ограничить его специально обученным регэкспом), который в свою очередь заставляет моск попотеть. Модификатор [L] обламывает всех, кто на него надеялся - он просто сразу заводит следующую иттерацию обработки. Вобщем-то и без всяких сопливых бесконечных циклов лишние иттерации усугубляют тогмоза в обработке.

Собственно способ наебать судьбу:
Цитата:

RewriteCond % !^$
RewriteRule ^ - [L]

#Дальше сколько угодно правил
RewriteRule ^/?page/([a-z]+)$ read.php?page=$1 [E=FINISH:1,L,QSA]
RewriteRule ^.*$ 404.php [E=FINISH:1,L]



Для чего это? При произведении окончательного преобразования URL-а -мы торжественно ставим переменную окружения FINISH, и при следующей иттерации индеец[toolfaq]Apache[/toolfaq] сделает копию старых перменных окружения добавив им префикс REDIRECT_, узрит установленный REDIRECT_FINISH и с чистой совестью утрет трудовой пот. Алес!

ЗЫ: В nginx в родном rewrite-engine эта проблема изначально отсутствует как класс.

ЗЗЫ: А если подумать то можно еще короче:

Цитата:
# Don't loop.
RewriteCond % !^$
RewriteRule .* — [L]




Звиздец рекомендует поделиться ссылкой с камрадами и откомментить эту заметку:
для печатиПечатай!  
 
ZviZdeZ.ru
Придет серенький Фенрир и укусит нас за мир

2009-2011©