我需要停止网站上图片目录的目录列表。我正在为网站上的图像和javascripts配置cookieless域。我已经完成了CNAME配置,并在httpd.conf文件中添加了虚拟主机配置。但是,如果我直接访问这个无cookie域,它列出整个目录内容。如何解决这个问题呢?
<VirtualHost ipaddr:80> ServerAdmin webmaster@site.com ServerName imgs.site.com ServerAlias www.imgs.site.com DocumentRoot /usr/tomcat/webapps/site/images <Directory /usr/tomcat/webapps/site/images> Options -Indexes FollowSymLinks AllowOverride none </Directory> CustomLog logs/imgs.site.com_access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" ErrorLog logs/imgs.site.com_error_log </VirtualHost> <VirtualHost ipaddr:80> ServerAdmin webmaster@site.com ServerName imgs.site.com ServerAlias www.imgs.site.com imgs.site.net DocumentRoot /usr/tomcat/webapps/site/images <Directory /usr/tomcat/webapps/site/images> Options -Indexes FollowSymLinks AllowOverride none </Directory> CustomLog logs/imgs.site.com_access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" ErrorLog logs/imgs.site.com_error_log </VirtualHost>
答案 0 :(得分:9)
我认为Directory
指令中的路径附加到DocumentRoot
,因此您实际上命令Apache不要索引/usr/tomcat/webapps/site/images/usr/tomcat/webapps/site/images
。请改为尝试以下配置:
DocumentRoot /usr/tomcat/webapps/site
<Directory ~ "/.*/">
Options -Indexes
</Directory>
这应禁用/usr/tomcat/webapps/site
下所有文件夹中的目录索引,例如。 /usr/tomcat/webapps/site/images/
,/usr/tomcat/webapps/site/fubar/
等等。
答案 1 :(得分:4)
Options -Indexes FollowSymLinks
来自Apache 2.0和Apache 2.2 docs:
警告强>
将Options
与+或 - 混合使用不是有效语法,可能会导致意外结果。
在Apache 2.4中,这将是......
...在服务器启动期间通过语法检查拒绝中止。
所以,你基本上需要在+
前面FollowSymLinks
(如果你想覆盖以前定义的所有,则完全删除-Indexes
参数>选项)。例如:
Options -Indexes +FollowSymLinks
答案 2 :(得分:2)
快速解决方法是将index.html
文件放入具有任意内容的目录中。索引将显示此文件的内容,而不是目录列表。