出于安全考虑,多数 apache 服务器都不允许访问不带 index.html 的目录。如果确实有需要,我们可以在该目录下建立 .htaccess 文件,内容如下:
Options All Indexes
IndexOptions -FancyIndexing
有了这个 .htaccess 文件后,用浏览器去访问一个名为 w 的目录,就会得到 Index of /w 页面,右上图。我最看不惯的就是那个 Index of /,而且如果有中文名称的目录或者文件,十之八九都是悲剧的乱码。这时候需要修改 httpd.conf 来稍微美化一下,我在 httpd.conf 中加入如下代码:
IndexIgnore header.html footer.html *.css *.jpg *.gif *.png .htaccess
IndexOptions Charset=UTF-8 +SuppressHTMLPreamble
HeaderName header.html
ReadmeName footer.html
然后重启 apache ,再来看看效果(右下图)。恩,凑合过得去了。
简单说说在 httpd.conf 中加入代码的含义:
IndexIgnore:在它后面列出的文件或目录将不显示在文件列表中,比如那个 少儿不宜 的文件夹就该列在这行里 :-)
IndexOptions Charset=UTF-8 是解决目录列表乱码问题的;
IndexOptions +SuppressHTMLPreamble 用来禁止 apache 服务器自动生成 Index of / 之类的 html 代码;
既然已经禁止服务器自动生成 html 代码,那我们就要给 Index of 目录列表页面做 header 和 footer,最后两行的意思就是告诉 apache 我们做好的 html 文件的名称和位置。值得注意的是文件路径是相对于列表目录的根而言的,我那样写就表示 header&footer.html 都在 w 目录下。
还有更多的设置,想知道的可以去啃啃这里的英文文档 mod_autoindex ,我只是一个抛砖头的。