我在Apache 2.4 Web服务器(AWS EC2主机)上有一个子域,并设置了索引 - 但它没有在顶层显示索引:仅在子目录中。如果顶级(http://stuff.example.com)没有DirectoryIndex文件(index.html),它只显示Amazon Linux AMI测试页面。如果我在顶层有一个index.html文件,它会正常显示。
我试图找到没有为域名页面显示索引的文档,但却没有。因此,我必须在这个基本配置(httpd.conf)中遗漏一些东西:
<Directory "/data/stuff">
AllowOverride Indexes AuthConfig
Require all granted
</Directory>
<VirtualHost *:80>
ServerName stuff.example.com
DocumentRoot /data/stuff
Options +Indexes +FollowSymLinks
</VirtualHost>
答案 0 :(得分:1)
在Apache 2.4的AWS EC2配置中(至少),还有一个额外的配置文件/etc/httpd/conf.d/welcome.conf
:
<LocationMatch "^/+$">
Options -Indexes
ErrorDocument 403 /.noindex.html
</LocationMatch>
<Directory /var/www/noindex>
AllowOverride None
Require all granted
</Directory>
Alias /.noindex.html /var/www/noindex/index.html
这不仅揭示了 Amazon Linux AMI测试页的性质,还解释了为什么此页面覆盖了子域的根URL的目录列表:因为它与正则表达式匹配在LocationMatch
。
如果网站管理员尚未添加索引页面,则此代码旨在显示对网站访问者有用的内容...但它还具有抑制任何子域的根URL的目录列表的副作用。一种解决方案是从Options -Indexes
注释掉或删除/etc/httpd/conf.d/welcome.conf
指令。
答案 1 :(得分:0)
您可以设置自己的DirectoryIndex,它将覆盖默认值。
<VirtualHost *:80>
ServerName stuff.example.com
DocumentRoot /data/stuff
DirectoryIndex index.php
Options +Indexes +FollowSymLinks
</VirtualHost>