Как показать индекс каталога в Apache 2.4 с помощью собственного корневого документа

У меня проблема в Apache 2.4 в Ubuntu 13.10. Я пытаюсь изменить Document Root в /home/fandi/public _html И все работает нормально. Но я пытаюсь создать папку в моем public_html/i, получаю ошибку, подобную этой:

[Sat Jan 25 10:59:50.149441 2014] [autoindex:error] [pid 1093] [client 127.0.0.1:39901] AH01276: Cannot serve directory /home/fandi/public_html/report_php/: No matching DirectoryIndex (index.html,index.cgi,index.pl,index.php,index.xhtml,index.htm) found, and server-generated directory index forbidden by Options directive

Я должен создать файл index.html, index.php и другой файл index.xxx.

По умолчанию он должен указывать индекс каталога. Как включить индекс каталогов?

Это мой файл 000-default.conf:

<VirtualHost *:80>
    ServerAdmin [email protected]
    DocumentRoot /home/fandi/public_html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory "/home/fandi/public_html">
        Options All
        AllowOverride All
        Require all granted
        Options Indexes FollowSymLinks
    </Directory>

</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Пожалуйста, помогите, спасибо до ^^

Ответы

Ответ 1

Оказывается, вам нужно отключить DirectoryIndex в Apache 2.4, чтобы получить автоматические индексы.

DirectoryIndex disabled
Options Indexes

Когда DirectoryIndex не отключен, автоматический индекс не работает, и apache отправляет либо 403 Forbidden, либо файл 404, который не найден, если вы используете fastcgi/php-fpm.

Вот соответствующие строки журнала ошибок (для целей поиска):

[authz_core:error] client denied by server configuration:
[proxy_fcgi:error] Got error 'Primary script unknown\n'

Ответ 2

Options All <--turn on all options
Options Indexes FollowSymLinks   <--- replace previously set options with these two

Вторая строка избыточна, поскольку вы уже включили все параметры в первой строке, и поскольку эти два параметра не имеют префикса с +, они фактически ЗАМЕНЯЮТ весь список опций, включенный с помощью All с помощью только двух отдельных опций.

Ответ 3

Мне удалось заставить его работать

Похоже, что Apache2.4 не переносит настройки с DocumentRoot на ваши виртуальные хосты, если только виртуальные хосты не являются подпапками DocumentRoot, как это делали предыдущие версии. Какой смысл имеет смысл, но это изменение должно быть документировано, и это не так.

Что я имею в виду, в вашем httpd.conf у вас будет (это OS X):

DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
    Options +Indexes +FollowSymLinks
    # etc
</Directory>

И затем в вашем дополнительном /httpd -vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/pth/to/somewhere/completely/different"
    ServerName my-virtual-host.dev
    ErrorLog "/private/var/log/apache2/my-virtual-host.dev-error_log"
    CustomLog "/private/var/log/apache2/my-virtual-host.dev-access_log" common
</VirtualHost>

VH используется для наследования всех настроек - не больше, если это не подпапка. Итак, что вам нужно сделать, это скопировать и вставить настройки в VH (или вы можете создать еще один <directory, если у вас много VH в одном месте)

<VirtualHost *:80>
    DocumentRoot "/pth/to/somewhere/completely/different"
    ServerName my-virtual-host.dev
    ErrorLog "/private/var/log/apache2/my-virtual-host.dev-error_log"
    CustomLog "/private/var/log/apache2/my-virtual-host.dev-access_log" common
    <Directory "/pth/to/somewhere/completely/different">
        Options +Indexes
    </Directory>
</VirtualHost>

Это + Индексы, которые делают магию.

Ответ 4

У меня была такая же проблема с Centos 7.2 и apache 2.4.

В новой установке проблема, скорее всего, вызвана welcome.conf, которая отключает опционные индексы в каждом месте:

<LocationMatch "^/+$"> Options -Indexes ErrorDocument 403 /.noindex.html </LocationMatch>

Этот файл восстанавливается при каждом обновлении Apache, тогда вы должны прокомментировать или удалить предыдущие строки.

Ответ 5

В журнале вы можете найти ошибку

[Sun Dec 03 17: 38: 17.649269 2017] [autoindex: error] [pid 4806] [client:: 1: 57323] AH01276: Невозможно обслуживать каталог /etc/httpd/conf/htdocs/: Нет соответствующего DirectoryIndex (), а индекс каталога, созданный сервером, запрещен директивой Options

чтобы исправить это: -

то вы должны удалить строку в /etc/httpd/conf.d/welcome.conf

ниже существующей конфигурации: - <LocationMatch "^/+$"> Options -Indexes ErrorDocument 403 /.noindex.html </LocationMatch>

решена с помощью следующей конфигурации: - прокомментировал строку.

<LocationMatch "^/+$"> #Options -Indexes ErrorDocument 403 /.noindex.html </LocationMatch>

Ответ 6

Добавьте эту строку в файл vhost.conf для сайта

DirectoryIndex default.html

И вы все настроены

Ответ 7

для будущих людей, если вы будете следовать всем выше, и проблема все еще возникает, попробуйте следующее:

httpd.conf(make sure belows are open):
LoadModule alias_module modules/mod_alias.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule autoindex_module modules/mod_autoindex.so
Include conf/extra/httpd-autoindex.conf

дополнительные/HTTPD-autoindex.conf:

<Directory "change to your directory">