如何在访问服务器根目录时从apache2中禁用目录索引?

31

我需要在apache2服务器的根目录下进入时禁用索引,有什么建议吗?

6个回答

50

编辑您的 Apache2 配置文件,通常位于目录 "/etc/apache2/httpd.conf"。

如果默认的 Web 服务器目录 (/var/www) 已经有一些配置,可以添加以下内容或进行编辑:

 <Directory /var/www>
   Options -Indexes
   AllowOverride All
   Order allow,deny
   Allow from all
 </Directory>

这将禁用对所有公共目录的索引。


9
在Ubuntu(以及据说在Debian中)路径为/etc/apache2/apache2.conf。由于不同发行版的Apache结构可能会有所不同,建议使用命令 grep -r "Directory /var/www" /etc/apache2 进行搜索。 - Jonathan Y.
AllowOverride All和Order和Allow对此无关紧要。此外,这些指令已经过时。请参见https://httpd.apache.org/docs/2.4/upgrading.html#run-time。 - Sybille Peters

28

通常是这样完成的:

Options -Indexes

减号表示“不”...


3
@AJ,我还是个新手,请您详细说明一下?我不知道该把它放在哪里^^我尝试了apache2.conf,但好像没有起作用。 - Lucas Famelli
2
这已经快8年前的事了。 - Lucas Famelli

15

如果您只想保护一个目录不被查看其内容,您也可以添加一个 index.html 或 index.php 文件,在某人浏览该目录时会显示该文件。


7
如果您的发行版上有a2dismod实用程序,您可以完全删除该模块,如果您根本不需要目录索引:
sudo a2dismod --force autoindex

使用--force-f标志可以避免以下警告:

WARNING: The following essential module will be disabled.                                                                                                                   
This might result in unexpected behavior and should NOT be done                                                                                                             
unless you know exactly what you are doing!                                                                                                                                 
 autoindex                                                                                                                                                                  
                                                                                                                                                                            
To continue type in the phrase 'Yes, do as I say!' or retry by passing '-f': Yes, do as I say!                                                                              
Module autoindex disabled.                                                                                                                                                  
To activate the new configuration, you need to run:                                                                                                                         
  systemctl restart apache2

这里是mod_autoindex的文档。


请注意:禁用自动索引会导致出现“服务器上未找到请求的URL”404错误信息。 - klor

6

请执行命令 sudo nano /etc/apache2/apache2.conf

在文件中找到这个部分 <Directory /var/www/>

将Indexes前加上减号(Denied)

将FollowSymLinks前加上加号

最终结果 : <Directory /var/www/> Options -Indexes +FollowSymLinks AllowOverride None Require all granted </Directory>

适用于Raspbian操作系统

您会收到消息:"您没有访问此服务器上的'Directory'的权限。"


禁用索引后,您会收到“您没有访问此资源的权限”的消息,403错误。 - klor

2

确保在您的sites-enabled(或者像我一样是sites-available)目录中的配置文件中添加-Indexes,它们通常位于“/etc/apache2/”目录下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接