Apache 映射文件
美化‘Index of/’界面
准备
为了减少工作量和维护难度懒省事,Null Mirror 站点的后端文件服务器采取的是用 Apache 直接映射驱动器文件的方式。这样做虽然方便了开发者和维护者(少写一个后端项目呢,一开始我是用的 Flask,遍历项目文件夹并返回二进制文件),但是对于使用者来说多多少少有了那么一点不美观(前端页面直接使用<iframe>
调用的页面),所以就想着用户能不能自定义 Apache 的默认站点外观呢?翻了一下 Apache 的 Docs 还真找到了一点东西,下面记录一下美化流程。
Step1
Apache 控制默认 Index 界面元素属性的模块为“mod_autoindex”,官方介绍是Generates directory indexes, automatically, similar to the Unix ls command or the Win32 dir shell command
,官方文档地址为Apache Docs,给了很长的一页介绍,而且没有中文翻译,推荐使用 Ctrl+F 检索着更改,不建议在 vhost.conf 或者 httpd.conf 里面的站点属性更改,建议在当前站点目录下新建.htaccess 文件并启用其控制站点属性,这样就不用每次更改完都要跑去控制台进行重启 httpd 服务。
Step2
万事俱备!首先确保当前站点能够顺利访问不然你改个锤子,在这里我主要更改了以下几个属性,当然你也可以去 Docs 里面找一下你想要的属性,属性名还是比较规范的翻译一下就能找到了,这是我的.htaccess 文件终版,访问镜像站站点可以查看成果。
# user config |
Step3
首先我想删除页面头部的“Index of/”字样我忍它很久了,所以我在IndexOptions
里面禁用了(如果是 Suppress 则为+,如果没有则为-意味禁用此项功能)SuppressHTMLPreamble
,然后再重新声明 Header 文件HeaderName /home/header.html
(不知道为什么,我禁用 HTML 模板启用 header.html 了之后 title 仍为 index of/)。
注意,重新声明文件时,要么使用有权限访问的绝对路径,要么在 vhost.conf 里面重新定义以下当前站点的路径。不要使用相对路径,会出现只有根页面修改,而次级页面(https://www.example.com/xxx/)在次级文件夹(xxx/header.html)找不到HTML文件则没有修改的情况。
然后,我的部分长文件名会出现折叠的情况我想让其全部显示,所以修改IndexOptions NameWidth=60
,使“文件名”一栏的宽度增加为 60 字节,不建议过宽,会导致页面缩放出现问题。然后删去后面的“描述”和“最后修改时间”栏目SuppressDescription SuppressLastModified
,当然你也可以依靠此元素的 Docs逐一修改文件描述(以文件类型修改)。然后修改文件的排序方式为文件夹优先和从小到大排序IndexOptions FancyIndexing VersionSort
最后,我想为我的文件添加图标,首先需要在 Apache 的 icons/文件夹(绝对路径为 /etc/httpd/icons
上传 jpg 或其他图像类型的文件,然后依照文件类型使用AddIcon
一一对应的添加图标或者替换掉默认图标。退出修改之前别忘了禁止访问.html 和.htaccess 文件防止数据泄露IndexIgnore header.html .htaccess
~