放羊的博客

万能的技术,苦逼的技术.

定制Apache索引样式

2015-12-08

虽然很多服务都迁移到Nginx了,但是一直不太满意Nginx的目录索引展示效果,所以目录索引的网站一直用的还是Apache。不过好像Nginx可以用fancyindex模块来定制所以的展示方式,http://mirrors.163.com 好像用的就是这个,不过还没有研究,有时间再看看吧。

最近忽然想要为目录展示的时候为一些特殊的目录加上一个说明,对目录做一个说明。所以需要定制下Apache的索引样式,下面记录下过程。

1.查看系统的Apache版本

1
2
3
[dukelazy@coreServer ~]# httpd -v
Server version: Apache/2.4.6 (CentOS)
Server built:   Aug 24 2015 18:11:25

2.到官网查看说明文档

Apache的目录索引(也就是目录浏览)功能是 mod_autoindex 模块实现的。 mod_autoindex 模块官方说明文档的网址是 http://httpd.apache.org/docs/2.4/mod/mod_autoindex.html

3.修改配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Directory "/">
  Options Indexes MultiViews FollowSymlinks
  indexOptions VersionSort FoldersFirst
  IndexIgnore favicon.ico header.html footer.html images
  HeaderName .mfs/HEADER.html
  ReadmeName .mfs/README.html
  IndexOrderDefault Ascending Name
  AllowOverride None
  Require all granted
</Directory>

<FilesMatch \.php$>
    SetHandler None
</FilesMatch>
DirectoryIndex None

4.配置文件部分指令说明

1. indexOptions

  • 示例
1
indexOptions VersionSort FoldersFirst NameWidth=*
  • 可用参数
    • ScanHTMLTitles - 搜索HTML标题,如果目录中含有HTML文件,则Apache会自动读取HTML文件的< title>……部分,用HTML文件的标题作为Description(描述)显示在列表目录中的 Description部分。。(注意:加载该指令会加大CPU的负荷!)
    • NameWidth=* - 文件命显示字节数指定目录列表可以显示最长为25字节的文件/目录名,如果使用*来做值,会自适应到最长文件名
    • DescriptionWidth=128 - 描述显示字节数指定目录列表可以显示最长为128字节的文件/目录描述内容
    • HTMLTable - 允许HTML格式
    • FoldersFirst- 目录优先
    • SuppressLastModified - 在目录中禁止显示最近的修改时间
    • VersionSort - 版本排序 如果目录中含有同一文件的不同版本,则Apache会对该文件按照版本号自动排序 无须多说,加上吧。对于中文来说,是按照拼音顺序排序
    • IconHeight=24 IconWidth=24 - 修改图标尺寸

2. IndexIgnore

索引排除语法 在它后面设定的文件/目录不会在目录列表中显示。

  • 示例
1
IndexIgnore header.html footer.html


header.html footer.html 这两个文件不会在索引(目录浏览)中出现。

3. HeaderName

指定该目录列表的header模板,指定一个html文件后,Apache会用这个网页替换掉默认目录列表上面呆板的Index of … 。

  • 示例
1
HeaderName /data/index/header.html

4. ReadmeName

在索引列表底部嵌入文件 指定该目录列表的footer模板,指定一个html文件后,Apache会在目录列表的底部加载这个网页。

  • 示例
1
ReadmeName /data/index/footer.html

5. IndexOrderDefault

指定目录列表的排序方式

  • 示例
1
IndexOrderDefault Ascending Date

6. AddDescription

如果你想为某个文件设置一个Description(描述)的话,就使用这个指令,格式是AddDescription “描述” 文件名

7. AddIcon

定制文件图标

  • 示例
1
2
AddIcon /icons/word.gif .doc .DOC
AddIcon /icons/rar.gif .rar .RAR

Apache有一个专门负责文件类型的文件:mime.types,里面为每个文件进行了详细分类。比如有:application,image,audio,video。在里面狂搜了一遍,没有上面的那三个类型,于是在前面增加如下定义

1
2
# MIME type Extensions
application/winrar rar