Как показать индекс каталога в 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">