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

Разрешение просмотра / обхода каталога для определенного VirtualHost в Apache 2.2

У меня настроен следующий vhost:

<VirtualHost *:80>
    DocumentRoot /var/www/myvhost
    ServerName myv.host.com
    ServerAlias myv.host.com
    ErrorLog logs/myvhost-error_log
    CustomLog logs/myvhost-access_log combined
    ServerAdmin myv@host.com
    <Directory /var/www/myvhost>
        AllowOverride All
        Options +Indexes
    </Directory>
</VirtualHost>

Конфигурация появляется быть правильным из apachectl перспектива инструмента.

Однако я не могу получить список каталогов на этом виртуальном хосте:

Forbidden

You don't have permission to access / on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Журнал ошибок показывает следующее:

[Wed Mar 07 19:23:33 2012] [error] [client 66.6.145.214] Directory index forbidden by Options directive: /var/www/******

update2

Совсем недавно в error.log появилось следующее:

[Wed Mar 07 20:16:10 2012] [error] [client 192.152.243.233] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/error/noindex.html

update3

Сегодня выгоняют:

[Thu Mar 08 14:05:56 2012] [error] [client 66.6.145.214] Directory index forbidden by Options directive: /var/www/<mydir>
[Thu Mar 08 14:05:56 2012] [error] [client 66.6.145.214] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/error/noindex.html
[Thu Mar 08 14:05:57 2012] [error] [client 66.6.145.214] Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.

Это после изменения vhosts.conf файл таким образом:

<VirtualHost *:80>
    DocumentRoot /var/www/<mydir>
    ServerName myhost
    ServerAlias myhost
    ErrorLog logs/myhost-error_log
    CustomLog logs/myhost-access_log combined
    ServerAdmin admin@myhost
    <Directory "/var/www/<mydir>">
         Options All +Indexes +FollowSymLinks
         AllowOverride All
         Order allow,deny
         Allow from all
    </Directory>
</VirtualHost>

Чего не хватает?

обновление 4

Все подкаталоги корневого каталога правильно делают списки каталогов - это только корень, который не может.

403 означает, что ресурс найден. Убедитесь, что у apache есть разрешение на каком-то уровне r-x корень документа и все каталоги над ним и r-- файлы в нем.

Попробуйте изменить директиву каталога на

<Directory /var/www/myvhost>
    AllowOverride All
    Options +Indexes
    Order allow,deny 
    Allow from all
</Directory>

У меня была аналогичная проблема сегодня, когда я видел ошибку, подобную вашей, показанной выше:

[Wed Oct 17 14:19:08 2012] [error] [client 123.66.66.22] Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: /var/www/mysite/

Варианты смешивания с +/- и без них проблематичны, обратите внимание на документация apache по параметрам:

Смешивание опций с + или - с опциями без них является недопустимым синтаксисом и будет отклонено во время запуска сервера проверкой синтаксиса с прерыванием.

Также эффект правильного использования директивы без +/- удаляет все другие ранее установленные директивы для этого каталога.

Я использовал индексы без +, и у меня была ошибка, которую я скопировал выше.

Поскольку вы говорите, что не используете файлы .htaccess, почему бы не изменить директиву Directory на это:

<Directory /var/www/myvhost>
    AllowOverride None
    Options +Indexes
    Order allow,deny
    Allow from all
</Directory>

Мое решение (по состоянию на 21 марта 2012 г.)

  • переместить все содержимое в подкаталог
  • создать перенаправление index.html файл в корне, который перезагружается в подкаталог

Я все еще хочу знать, почему я не могу просто пройти по самому каталогу, но пока это работает.

В моих системах CentOS 5/6/7 эта проблема вызвана каким-то конфликтом в файле /etc/httpd/conf.d/welcome.conf по умолчанию, который поставляется с системой. Комментирование каждой строки файла welcome.conf и перезапуск веб-сервера приводит к тому, что индекс каталога становится доступным для просмотра в корневом веб-сервере. Похоже, это просто ошибка в конфигурации веб-сервера по умолчанию, которая поставляется из коробки, по крайней мере, в системах Red Hat / CentOS, но, возможно, и в других. В вашей системе могла быть аналогичная проблема.