19

我在 Ubuntu 13.10 的 Apache 2.4 中有问题。我尝试将 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.htmlindex.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

请帮忙,谢谢之前^^

4

7 回答 7

11

原来你需要在 Apache 2.4 中禁用 DirectoryIndex 才能获得自动索引。

DirectoryIndex disabled
Options Indexes

当 DirectoryIndex 未禁用时,自动索引不起作用,如果您使用 fastcgi/php-fpm,apache 会发送 403 Forbidden 或 404 File not found。

以下是相应的错误日志行(用于搜索目的):

[authz_core:error] client denied by server configuration:
[proxy_fcgi:error] Got error 'Primary script unknown\n'
于 2014-08-01T12:34:24.170 回答
7
Options All <--turn on all options
Options Indexes FollowSymLinks   <--- replace previously set options with these two

第二行是多余的,因为您已经打开了第一行的所有选项,并且由于这两个选项没有前缀,它们实际上只用这两个单独的选项+替换了启用的整个选项列表。All

于 2014-01-25T04:11:20.017 回答
6

我对 Centos 7.2 和 apache 2.4 也有同样的问题。

在新安装中,问题很可能是由welcome.conf在每个位置禁用选项索引引起的:

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

该文件在每次 Apache 升级时都会恢复,然后您应该注释或删除之前的行。

于 2016-08-30T22:34:39.110 回答
5

我设法让它工作

基本上,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 曾经继承所有设置 - 如果它不是子文件夹,则不再继承。<directory因此,您需要做的是复制并粘贴 VH 中的设置(或者,如果您在同一个地方有很多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 发挥了魔力。

于 2015-03-06T22:35:21.633 回答
1

在日志中你可以发现一个错误

[Sun Dec 03 17:38:17.649269 2017] [autoindex:error] [pid 4806] [client ::1:57323] AH01276:无法提供目录 /etc/httpd/conf/htdocs/:找不到匹配的 DirectoryIndex (),和选项指令禁止的服务器生成的目录索引

要解决这个问题:-

那么您必须删除 /etc/httpd/conf.d/welcome.conf 中的行

低于现有配置:-

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

使用以下配置解决,:-注释掉一行。

<LocationMatch "^/+$">
   #Options -Indexes
    ErrorDocument 403 /.noindex.html
</LocationMatch>
于 2017-12-03T16:47:41.380 回答
0

将此行添加到站点的 vhost.conf 文件中

DirectoryIndex default.html

你都准备好了

于 2015-06-24T13:01:08.640 回答
0

对于未来的人,如果您按照以上所有操作仍然出现问题,请尝试以下操作:

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">
于 2016-03-04T04:48:56.747 回答