Вызывает ли перезапись MOD_Rewrite второй проход по правилам перезаписи?

StackOverflow https://stackoverflow.com/questions/229231

  •  04-07-2019
  •  | 
  •  

Вопрос

Когда MOD_Rewrite выполняет RewriteRule, все ли правила MOD_Rewrite будут выполнены снова для вновь сгенерированного запроса? В частности, в следующем примере это вызовет цикл?

RewriteCond Host:  (?:www\.)?mysite\.com
RewriteRule ^(.*)$ $1 [QSA,L]
Это было полезно?

Решение

В вашем случае это ни в коем случае не сделает цикл. У вас есть "L" включите, исправив это конкретное правило как последнее.

Кроме того, вы должны явно форсировать следующую итерацию, используя " N " или "NS" переключатели, или он будет просто перемещаться по вашему файлу правила и останавливаться с последним соответствующим правилом. Из документов:

  

N (следующая итерация)

     

Принудительно переписывает движок   цель правила и правила перезапуска   проверка с самого начала (все   изменения сохранены). Количество   перезапуски ограничены значением   указанный в RepeatLimit   директивы. Если это число превышено   Флаг N будет просто проигнорирован.

     

NS (следующая итерация того же правила)

     

Работает как флаг N, но перезапускается   обработка правил по тому же правилу   (то есть заставляет повторить правило   приложение). Максимальное количество   итерации одного правила задаются   Директива RepeatLimit. Но ряд   повторение одного правила не считается   для глобального числа повторений (т.е.   повторяет лимит для ряда   итерации, вызванные N-флагом   независимо от количества повторов   вызвано NS).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top