Назад | Перейти на главную страницу

RewriteRule в htaccess в подкаталоге

Сервер 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>