如何使用自定义文档根在Apache 2.4中显示目录索引

时间:2014-01-25 04:08:45

标签: webserver apache2.4

我在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

请帮助,谢谢^^

之前

7 个答案:

答案 0 :(得分:8)

原来你需要在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'

答案 1 :(得分:7)

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

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

答案 2 :(得分:5)

我设法让它工作

基本上似乎Apache2.4没有将DocumentRoot中的设置转移到虚拟主机,除非虚拟主机是DocumentRoot的子文件夹,就像之前的版本一样。哪种方式有意义,但应记录变更,但事实并非如此。

我的意思是,在你的httpd.conf中你将拥有(这是一个OS X):

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

然后在你的extra / 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中的设置(如果你在同一个地方有很多VH,你可以创建另一个<directory

<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>

这是魔法的+指数。

答案 3 :(得分:5)

我在Centos 7.2和apache 2.4中遇到了同样的问题。

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

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

此文件在每次Apache升级时都会恢复,然后您应该评论或删除以前的行。

答案 4 :(得分:1)

在日志中,您可以找到错误

[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>

答案 5 :(得分:0)

将此行添加到站点

的vhost.conf文件中

DirectoryIndex default.html

你已经完成了

答案 6 :(得分: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">