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

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

[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 webmaster@localhost
    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

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


person fanjavaid    schedule 25.01.2014    source источник
comment
Не уверен, почему это было помечено как php или ubuntu - это чистый вопрос Apache   -  person gotofritz    schedule 08.03.2015
comment
Как использовать директиву Apache DirectoryIndex amitoverflow.com/2021/04/29 / how-to-use-directoryindex   -  person Amit Verma    schedule 09.05.2021


Ответы (7)


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

DirectoryIndex disabled
Options Indexes

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

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

[authz_core:error] client denied by server configuration:
[proxy_fcgi:error] Got error 'Primary script unknown\n'
person mad    schedule 01.08.2014
comment
Можно было бы подумать, что отказ от обслуживания / usr / share / apache2 / icons / может быть где-то обнаружен каким-то автоматическим набором тестов. alias.conf по умолчанию включает ... / icons /, но по-прежнему имеет [autoindex: error] ... AH01276: Невозможно обслужить каталог / usr / share / apache2 / icons / Спасибо! - person rjt; 13.01.2015
comment
Это было проблемой для меня. Вы должны сначала отключить DirectoryIndex - person Brady; 26.01.2015
comment
Для меня это ничего не дало. - person gotofritz; 07.03.2015
comment
Нет информации, где отключить DirectoryIndex. - person user1; 13.09.2016

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

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

person Marc B    schedule 25.01.2014
comment
Итак, как мне отредактировать? Раньше я просто использовал Options All, а теперь пытаюсь использовать только Options Indexes FollowSymLinks, но это не сработало. : \ - person fanjavaid; 25.01.2014
comment
У меня не сработало. Apache 2.4 внезапно превратился в головную боль, и я работаю с Apache более 10 лет. Проблема в том, что если вы попробуете погуглить, вы получите ответы за последние 10+ лет для 2.2, и все они НЕПРАВИЛЬНЫ. - person laapsaap; 25.09.2014

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

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

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

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

person balucio    schedule 30.08.2016
comment
Это правильное решение, оно также применимо к другим выпускам в стиле Redhat (например, Fedora в моем случае) - person Adrian Cornish; 21.10.2020

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

В основном кажется, что 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>

Именно + Indexes творит чудеса.

person gotofritz    schedule 06.03.2015
comment
В Debian 8.0 Jessie's Apache (2.4) необходимо явно добавить DocumentRoot /var/www к вашему /etc/apache2/apache2.conf, если вы обслуживаете несколько виртуальных хостов с их собственными корнями документов. - person Neurotransmitter; 05.05.2015

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

[Вс, 03 дек. 17: 38: 17.649269 2017] [автоиндекс: ошибка] [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>
person viki    schedule 03.12.2017

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

DirectoryIndex default.html

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

person error2007s    schedule 24.06.2015

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

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">
person hellowd    schedule 04.03.2016