常用基础 - 隐藏目录索引

  • 作者:KK

  • 发表日期:2017.4.14


什么是目录索引

比如/a目录下有1.php、2.php和3.php,那这个目录下的这些文件列表就是目录索引

有时候你会发现当访问http://localhost/a这样的地址的时候,只是指定了a目录但没有指定文件名

与此同时a目录下又没有主机目录索引,于是就没有网页可以输出,也没有脚本可以运行了

这下怎么办呢?在开启目录索引的时候,Apache就会把所有文件列表给显示出来(如下图)

如果关闭了目录索引就会提示You don't have permission to access 访问目录 on this server.(你无权浏览该目录)


开关控制

通常我们都不会随便开启显示目录索引,这是为了不暴露服务器文件内容(有些内容无关紧要的站点会开启显示,比如一些开源软件镜像站)

它是通过Options指令来设定开启或关闭的,Options指令有4个作用区域可以设定:

  1. 全局作用域

  2. VirtualHost指令作用域

  3. Directory指令作用域

  4. hatccess作用域

在这三个地方找到Options指令然后看看后面有没有Indexs把它删掉或者改成-Indexs就可以了(Indexs或+Indexs表示开启)


作用域覆盖

但是可以互相覆盖外部作用域的,比如如果全局作用域设定为Options -Indexs,那如果在个别VirtualHost里设定Options +Index,则默认所有全局所有虚拟主机听从全局设定要隐藏索引,而设定了+Indexs的个别主机会显示索引(如下图所示)

所以如果在htaccess里使用该指令的话,可以控制某一个目录特殊允许列出文件列表