禁用 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 上的目录列表;但应允许访问单个文件的主要内容,如果未能解决你的问题,请参考以下文章