Скажем так, желательно глобально отключить обработку
.htaccess файлов для всего сервера, и включать ее ТОЛЬКО там, где нужно, при помощи сексции
<Directory>, внутри конфигурации того или иного Virtualhost
При этом мы убиваем двух зайцев:
- значительно снижаем нагрузку на сервер, запрещая apache рыскать по всем вложенным директориям в поисках .htaccess, ответственного за ту или иную директорию.
- получаем возможность точной настройки конфигурационных директив, применяемых для той или иной директрии, зная при этом на 100% что нет более никаких директив to override или to affect то, что мы хотим от apache в той или иной конкретной директории.
Кроме того, речь о том, что желательно вообще отказаться от использования
.htaccess, а использовать все возможные директивы внутри главного
httpd.conf для каждого конкретного вируального хоста.
Применительно к ситуации, описанной
masterlelik, я предлагал включить
AllowOverride None для всего сервера, включить
AllowOverride All и настроить rewrite rules только для нужной директории.
Еще более конкретно:
у нас есть два
.htaccess, один в
DocumentRoot, а второй на один уровень ниже:
Код:
/home/user/public_html/.htaccess
/home/user/.htaccess
Если в httpd.conf, внутри нужного нам VirtualHost написать следующее:
Код:
<VirtualHost ххх.ххх.ххх.ххх>
.........
DocumentRoot /home/user/public_html
<Directory /home/user/public_html>
AllowOverride None
</Directory>
.........
</VirtualHost>
то будет обрабатываться ТОЛЬКО
/home/user/.htaccess
если в описанной выше конфигурации заменть
AllowOverride None на
AllowOverride All, то будут обрабатываться ОБА .htaccess файла, причем тот, что расположен выше, будет ГЛАВНЫМ, и из двух одинаковых директив будет выполнена та, что в
/home/user/public_html/.htaccess
P.S. при этом я совершенно согласен с тобой, что фраза "для этого вам достаточно добавить в конфигурацию apache инструкцию, которая запрещает переность свойства
.htaccess лежащего в корне, на вложенные директории" ничего общего с истинным назначением
AllowOverride не имеет.
на самом деле:
1. AllowOverride с переключателем None заставляет сервер "забыть" о существовании .htaccess
2. AllowOverride с переключателем All говорит серверу обрабатывать любую директиву, разрешенную в .htaccess
ОДНАКО: использование контейнера
<Directory> в
httpd.conf позволяет "отменить" пункт 1 для конкретной директории.