有什么方法可以更改 mod_autoindex 以便每当图像类型(jpg、png 等)或音频(mp3、ogg)的文件时,它要么打开其中一个嵌入的小窗口并显示图像,要么使用基于 Flash 或 HTML5 的文件音频播放器播放文件。我知道这个模块有很多自定义选项,但我不知道它使用什么代码来生成文件列表。
1 回答
简答
是的,有几种方法可以做到这一点。哪一个适合您取决于您的个人需求和技能。您的选择是编辑 C 源代码并创建自己的 Apache 模块,或者通过声明将客户端或服务器端脚本用作(或包含在)索引文件的标头来添加额外的功能。
长答案
编辑源代码
实际更改列表的唯一方法(也是最难的选择)是编辑源代码并编译您自己的 Apache 模块。每个文件的 HTML 代码放在mod_autoindex.c 文件的第 1852 行。如果您不懂 C 或者如果代码看起来对您来说太吓人,则无法直接更改列表。
但是,您可以通过向索引页眉或页脚文件添加(服务器端或客户端)功能来间接更改列表。
这给我们带来了更简单的选择。
添加服务器端功能
虽然您无法更改列表,但您可以通过使用服务器端脚本扫描您正在浏览的目录并为某些文件添加缩略图/预览来进行添加。您甚至可以使用 CSS 完全隐藏原始列表,并让服务器端脚本构建您自己的自定义列表。
当然,您必须能够编程 Python/Perl/Ruby/PHP/等。去做这个。
不久前,我在我的Apache Directory List Theming 项目中使用 PHP(主要是作为练习)对此进行了尝试。除了显示给定目录中所有图像和 PDF 文件的缩略图列表之外,它什么也不做。(它也不是很复杂)。
如果您还想为音频和/或视频文件添加预览,并且您希望这些预览出现在Apache 生成的列表中,那么您可能最好使用客户端解决方案。
添加客户端功能
通过添加 Javascript 功能,您可以解析列表,并为您感兴趣的每个文件在列表中插入预览。prettyAutoIndex项目就是这样做的。我没有亲自使用它,但它看起来,嗯,很漂亮:-) 它似乎没有被积极开发,但如果它有效,它并不一定是。
如果它不是您想要的并且您可以使用 Javascript 进行编码,那么自己创建一些东西应该不会太难。
包起来
如果您决定创建服务器或客户端解决方案,它应该不会比创建具有某些功能的文件并从 Apache Config 调用它更复杂headername
:
<IfModule mod_autoindex.c>
HeaderName /path/to/header.file
</IfModule>
不幸的是,有一些陷阱,所以我建议花时间阅读mod_autoindex 手册的相关部分。