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