Сервер Windows, работающий под управлением Apache. В моем Apache conf у меня есть AllowOverride None
для корня сайта, а затем у меня есть подкаталог, установленный на AllowOverride All
:
<Directory />
AllowOverride None
</Directory>
<Directory "/safe/">
AllowOverride All
</Directory>
Однако, когда я пытаюсь настроить правило перезаписи в подкаталоге .htaccess
файла ничего не происходит, я получаю ошибку 404 страница не найдена. Пример:
RewriteEngine On
RewriteRule (.*) /blah?test=$1 [R=302,NC,NE,L]
Перезапись URL-адресов работает нормально из корня через Apache conf. Не понимаю, почему игнорируется правило. Я не хочу перезаписывать URL-адрес в конфиге, потому что в этом случае мне может потребоваться постоянно менять перенаправления, и я не хочу перезагружать сервер каждый раз, когда вносятся изменения. Я также не хочу влиять на производительность сервера, включив .htaccess
файлы по всему сайту, просто в подкаталоге, который мне нужен.
Остерегайтесь тегов Directory и Location в конфигурации Apache, они действительно имеют разное значение. Каталог работает с файловой системой и местоположением URI.
Если вы говорите об URL-адресе вроде этого: http://example.com/safe/index.html вы должны сделать так:
<Location /safe>
AllowOverride All
</Location>