首页 文章

Apache Options - 索引配置不起作用

提问于
浏览
6

我需要停止网站上图像目录的目录列表 . 我正在为网站上的图像和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>

3 回答

  • 2

    一个快速的解决方法是将 index.html 文件放入具有任意内容的目录中 . 索引将显示此文件的内容而不是目录列表 .

  • 8

    我认为 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/ 等 .

  • 3

    选项 - 索引FollowSymLinks

    从Apache 2.0和Apache 2.2 docs

    警告使用带有或的混合选项 - 没有带有无效语法的选项,可能会导致意外结果 .

    Apache 2.4这将是......

    ...在服务器启动期间通过语法检查中止而被拒绝 .

    所以,你基本上需要 FollowSymLinks 前面的 + (或者如果要覆盖所有先前定义的选项,则完全删除 -Indexes 参数) . 例如:

    Options -Indexes +FollowSymLinks
    

相关问题