域级目录列表(Apache)

时间:2015-10-10 09:49:43

标签: apache .htaccess amazon-ec2 httpd.conf

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

2 个答案:

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