VolkerK делает хорошее замечание: не используйте и RewriteEngine on
, и RewriteEngine off
, потому что вы не включаете механизм перезаписи, добавляете правило и снова его выключаете. Конфигурация Apache не работает как программирование, где у вас есть набор инструкций, которые компьютер выполняет по порядку. Вы можете представить себе это примерно так: когда Apache анализирует свои файлы конфигурации (например, .htaccess
), он сначала считывает все директивы и сортирует их в естественном порядке, в котором они будут применяться. Это больше похоже на инициализацию значений переменных в начале программы, где результат, как правило, одинаков, независимо от того, в каком порядке вы пишете операторы.
В вашем случае указание RewriteEngine on
и RewriteEngine off
в одном и том же файле может привести к путанице в Apache, поскольку (в моей маленькой метафоре), когда Apache сортирует директивы в их «естественном» порядке, это приводит к с чем-то вроде
RewriteEngine on
RewriteEngine off
RewriteRule ...
, который предположительно выключил бы движок перезаписи. Но, конечно, то, что на самом деле происходит, сложнее, чем просто сортировка директив в списке, поэтому вы не можете точно сказать, что Apache будет делать с таким файлом, как ваш. Только не пытайтесь включать и выключать механизм перезаписи для разных частей файла, и помните, что директивы конфигурации Apache - это не просто операторы, которые нужно запускать по порядку.