禁用 apache 上的目录列表;但应允许访问单个文件

Posted

技术标签:

【中文标题】禁用 apache 上的目录列表;但应允许访问单个文件【英文标题】:Disable directory listing on apache; but access to individual files should be allowed 【发布时间】:2012-06-23 14:44:24 【问题描述】:

我不想使用 .htaccess。我应该如何更改我的目录属性?

<VirtualHost *:80>
   ServerName abc.com
   DocumentRoot /usr/share/uploads
   <Directory " /usr/share/uploads">
      Order allow,deny
      Allow from all
   </Directory>
</VirtualHost>

【问题讨论】:

【参考方案1】:

如果您使用的是 Debian/Ubuntu,只需转到终端并输入

sudo a2dismod autoindex
sudo service apache2 restart

如果您使用的是 Centos/Fedora,请执行以下操作:

mv /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/autoindex.bkp
/etc/init.d/httpd restart

在其他操作系统或发行版中类似...

这应该禁用 apache 模块,该模块使那些花哨的(通常无用和安全问题)目录列表。此外,作为奖励,您可以获得一些表现:-)

【讨论】:

这个解决方案再简单不过了 或在 wamp(在 windows 上)在 httpd.conf 中将“#”放在 Include conf/extra/httpd-autoindex.conf 和 LoadModule autoindex_module modules/mod_autoindex.so 前面 我已经编辑了整个服务器上的每一个配置文件,并且无法停止那些目录索引页面。这成功了。你应该得到公认的答案。【参考方案2】:

我真的在网上找不到直接的答案;甚至在 apache 文档上。最后,可以通过几次迭代找到解决方案;我们需要使用选项,并且该值不应包含索引。

<Directory "/usr/share/uploads">
        Options Includes FollowSymLinks MultiViews
        AllowOverride None
         Order allow,deny
      Allow from all
   </Directory>

【讨论】:

相关文档是核心功能页面的Options 部分,其中描述了“索引”选项的影响。您还可以通过在它们前面加上 -/+ 来禁用/启用单个选项,而不会影响之前设置的任何其他选项:Options -Indexes【参考方案3】:

@Deepak 解决方案对我不起作用。这个做到了:

在主apace配置/etc/apache2/httpd.conf中添加:

<Directory />
        Options FollowSymLinks
        AllowOverride All
</Directory>

它适用于所有域和子域。没有 .htaccess 文件。

【讨论】:

【参考方案4】:

以上都完成了,但是目录信息还在出现吗? 如果您使用 index.php,而不是 index.html,请检查以下内容:

<IfModule dir_module>
    DirectoryIndex index.php
</IfModule>

【讨论】:

【参考方案5】:

最简单的方法是在该目录中放置一个空的 index.html(或您的 apache 配置为默认提供的任何内容)。 这不是一个真正的解决方案,而是一个非常简单的解决方法。浏览该目录的用户只会看到一个空白页面。

您还可以使用模拟目录列表并仅显示一些特殊文件的脚本(如 index.php)。

【讨论】:

这个上传目录不是一个可以有 index.jsp 的 webapp,无论如何这也不是一个好的解决方案。

以上是关于禁用 apache 上的目录列表;但应允许访问单个文件的主要内容,如果未能解决你的问题,请参考以下文章

Apache 2.4 访问控制;

Apache 配置:正则表达式禁用对以点开头的文件/目录的访问

允许访问单个 URL Android Chrome

无法在 httpd.conf 中禁用目录列表

apache认证授权访问控制

如何只允许从 Apache Httpd 2.4 上的特定主机访问?