Это действительно дополнение к комментарию Каз, так как я с ними согласен, но оно не вписывается в ограничение количества символов комментария. Если файл .htaccess обрабатывается (в контексте на каталог), если произошла одна или несколько перезаписей, которые изменяют URI, то происходит внутреннее перенаправление. Сканирование .htaccess перезапускается, и правила оцениваются.
По умолчанию используется только один набор правил перезаписи: это те, которые находятся в самом низком .htaccess
на пути с RewriteEngine On
. Таким образом, в случае domain.local
запроса на втором проходе и , если DOCROOT/web/.htaccess
, тогда он будет выполнен вместо DOCROOT/.htaccess
для запросов к domain.local
.
Другим аспектом является проблема зацикливания, которая, как я вижу, связана с перезаписью второй секунды для каждого правила. Однако это может не сработать, если у вас включены такие опции, как MultiViews
(еще одна причудливая недоработка Apache, которая наносит ущерб правилам перезаписи), потому что это разбивает запрос на части и выполняет подзапросы, которые могут помешать этому типу антирекурсивного условия.
Так что я всегда включаю MultiViews и DirectoryIndex со списком поиска.
Вы также можете добавить флаг [NS] ко всем правилам, поскольку ни одно из них не применимо в подзапросе. Я также установил переменную окружения END = true для принудительного выхода, когда я хочу сделать это и использую этот ограничитель в верхней части моих правил:
RewriteCond %{IS_SUBREQ}%{ENV:END} true
RewriteRule ^ - [L]