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