Показать сообщение отдельно
  #5 (permalink)  
Старый 23.11.2007, 19:10
Аватар для Ulitka
Ulitka Ulitka вне форума
 
Регистрация: 01.10.2003
Адрес: USA
Сообщения: 7,105
Сказал спасибо: 175
Поблагодарили 238 раз в 173 сообщениях
Вес репутации: 4143
Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute Ulitka has a reputation beyond repute
По умолчанию Re: Не получается осилить простенькое правило по Mod Rewrite

Скажем так, желательно глобально отключить обработку .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 для конкретной директории.
__________________
looking into the sky is looking into the past...
Ответить с цитированием