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

有时候, 对于某些目录, 我们并不会为它专门写一个 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, 问题即可得到解决!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blood_Seeker

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值