Apache 不能列目录解决 -- server-generated directory index forbidden by Options directive

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Blood_Seeker/article/details/53707984

有时候, 对于某些目录, 我们并不会为它专门写一个 index 文件, 而是希望它以目录的形式列出来,  Apache 肯定是提供了这个功能的


编辑主配置文件 vi /etc/httpd/conf/httpd.conf


我们以根目录 /var/www/html 为例进行说明:

在 :

<Directory "/var/www/html">

....

</Directory>

这个容器内, 我们添加语句: Options Indexes

当在 Option 指令的选项中指定了 Indexes 时, Apache 的 mod_autoindex 模块能够检测是否此目录有 index.html ,index.php 等之类的文件,

如果没有, 则会列出此目录里的所有文件(通常, 这么做并不安全)


但今天我这么试了下, 发现根目录 /var/www/html 并不能列出目录, 加了这条语句也不行, 查看日志:



看最后一条, 日志报错的意思很明显: /var/www/html/ 内既没有 index.html 这类文件,  又被 options 指令禁用了列目录的功能, 所以不论你怎么访问

主页, 看到的都是 Apache 的欢迎界面

刚开始很纳闷, 明明已经写了 options indexes 语句, 怎么反而还说我禁用了它?

于是我这么做:

cd /etc/httpd/

grep -R "Options"  ./* | grep ".conf"

        # grep ".conf" 的原因是会让 Apache 产生变化的只可能是 .conf 的文件, 所以找到它们就行了

发现: 在 conf.d/welcome.conf  里有一行:  Options -indexes


打开这个文件, 仔细一看, 果然! Apache为了保护服务器的安全, 当根目录下没有 index 文件时, 会返回一个报错界面, 那个报错界面就是 Apache 经典的欢迎界面! 此时去掉这一行的  "-" 号, 即, 开启 indexes 功能, 再重启 Apache, 问题即可得到解决!


猜你喜欢

转载自blog.csdn.net/Blood_Seeker/article/details/53707984