我在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.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
请帮助,谢谢^^
之前答案 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">