Apache — не обрабатывается файл .htaccess

Автор: | 08/12/2012
 

Проблема заключается в следующем: при настройке нового виртуалхоста — сервер Apache не обрабатывает файл .htaccess.

Хотя в файле указана директива:

Options -Indexes

сервер все-равно отображает содержимое каталога виртуалхоста.

О создании и настройке виртуалхостов можно почитать тут>>>.

Решение заключается в переопределении параметра:

<Directory />
AllowOverride None
Order deny,allow
Deny from all
</Directory>

В файле конфигурации Apache/usr/local/etc/apache22/httpd.conf установлено глобальное значение директивы — запретить в корневом каталоге сервера. Сама директива AllowOverride определяет директивы, разрешенные для использования в файле .htaccess.

Что бы не менять значение для всего каталога веб-сервера и его подкаталогов, переопределим значение для отдельного виртуалхоста.

В файл конфигурации /usr/local/etc/apache22/extra/httpd-vhosts.conf, где описан настраиваемый виртуалхост, в блок <VirtualHost *:80> можно добавить значение локальных директив для каталога.

К примеру, описание виртуалхоста:

<VirtualHost *:80>
ServerAdmin root@setevoy.org.ua
DocumentRoot /usr/local/www/users/setevoy/setevoy.org.ua
ServerName setevoy.org.ua
ServerAlias setevoy.kiev.ua
ErrorLog /var/log/apachelog/setevoy.org.ua-error.log
CustomLog /var/log/apachelog/setevoy.org.ua-error.log common
</VirtualHost>

Теперь, разрешим в нем использование любых параметров через .htaccess, для этого изменим описание, добавив блок <Directory>, в котором будет описано поведение сервера при чтении из указанного каталога:

<VirtualHost *:80>
ServerAdmin root@setevoy.org.ua
DocumentRoot /usr/local/www/users/setevoy/setevoy.org.ua
ServerName setevoy.org.ua
ErrorLog /var/log/apachelog/setevoy.org.ua-error.log
CustomLog /var/log/apachelog/setevoy.org.ua-error.log common
<Directory /usr/local/www/users/setevoy/setevoy.org.ua>
AllowOverride All
</Directory>
</VirtualHost>

… Профит!

Более подробная информация — на веб-сайте http://httpd.apache.org.