【问题标题】:Apache Options -Indexes configuration not workingApache 选项 - 索引配置不起作用
【发布时间】:2010-12-31 14:09:30
【问题描述】:

我需要停止网站上图像目录的目录列表。我正在为网站上的图像和 javascripts 配置 cookieless 域。我已经完成了 CNAME 配置,并在 httpd.conf 文件中添加了虚拟主机配置。但是,如果我直接访问这个无 cookie 域,它会列出整个目录内容。如何解决这个问题呢?

ServerAdmin webmaster@site.com 服务器名称 imgs.site.com 服务器别名 www.imgs.site.com DocumentRoot /usr/tomcat/webapps/site/images 选项 - 索引 FollowSymLinks 允许覆盖无 目录> CustomLog 日志/imgs.site.com_access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" 错误日志日志/imgs.site.com_error_log 虚拟主机> ServerAdmin webmaster@site.com 服务器名称 imgs.site.com 服务器别名 www.imgs.site.com imgs.site.net DocumentRoot /usr/tomcat/webapps/site/images 选项 - 索引 FollowSymLinks 允许覆盖无 目录> CustomLog 日志/imgs.site.com_access_log "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" 错误日志日志/imgs.site.com_error_log 虚拟主机>

【问题讨论】:

    标签: apache httpd.conf


    【解决方案1】:
    Options -Indexes FollowSymLinks
    

    来自 Apache 2.0 和Apache 2.2 docs

    警告
    Options 与 + 或 - 与那些没有的混合是无效的语法,并且可能会导致意外结果。

    Apache 2.4 这将是...

    ...在服务器启动期间被带有中止的语法检查拒绝。

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

    Options -Indexes +FollowSymLinks
    

    【讨论】:

    • 如果我们不想完成目录索引,我想知道是否有必要使用-Indexes。我们不能不包括索引吗?并有这样的选项:Options FollowSymLinks
    • @AshishRanjan 是的,你可以这样做。但请注意,这也会覆盖之前在服务器配置中定义的任何其他选项(尽管由于这是在 VirtualHost 上下文中,这可能是更好的选择)。
    • 好的,+ 表示添加而不是覆盖可能已在服务器配置中定义的现有选项!
    • @AshishRanjan 是的,没错。因此,在这个问题的上下文中,我们不能可靠地建议使用 Options FollowSymLinks,因为我们不知道服务器配置中可能已经定义了哪些其他选项(并且可能正在使用)。
    【解决方案2】:

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

    【讨论】:

    • > 我认为Directory 指令中的路径附加到DocumentRoot Directory-path 是完整路径一个目录,或者一个使用 Unix shell 样式匹配的通配符字符串” (httpd.apache.org/docs/2.2/mod/core.html#directory)。因此,我的示例之所以有效,是因为它匹配主机中的每个目录
    【解决方案3】:

    一种快速的解决方法是将index.html 文件放入目录中,其中包含任意内容。索引将显示此文件的内容而不是目录列表。

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 2017-12-04
      • 2017-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-29
      • 2011-10-28
      • 1970-01-01
      相关资源
      最近更新 更多