是否有某种方法可以更改mod_autoindex,以便每当图像类型(jpg,png等)或音频(mp3,ogg)文件打开其中一个小嵌入式窗口并显示图像或使用闪光灯时或基于HTML5的音频播放器播放文件。我知道这个模块有很多自定义选项,但我无法弄清楚它用来生成文件列表的代码。
答案 0 :(得分:2)
是的,有几种方法可以做到这一点。哪一个适合您取决于您的个人需求和技能。您可以选择编辑C源代码并创建自己的Apache模块,或通过声明客户端或服务器端脚本用作索引文件头(或包含在其中)来添加额外功能。
实际更改列表的唯一方法是编辑源代码并编译自己的Apache模块,这也是最难的选择。每个文件的HTML代码放在line 1852 in the mod_autoindex.c file上。如果您不知道C或代码看起来太令人生畏,则无法直接更改列表。
但是,您可以通过向索引页眉或页脚文件添加(服务器端或客户端)功能来间接更改列表 。
这为我们带来了更轻松的选择。
虽然您无法更改列表,但您可以通过使用服务器端脚本扫描您正在浏览的目录并添加某些文件的缩略图/预览来进行添加。您甚至可以使用CSS完全隐藏原始列表,并让服务器端脚本构建您自己的自定义列表。
当然,您必须能够编写Python / Perl / Ruby / PHP /等程序。这样做。
我刚刚在我的Apache Directory List Theming project中用PHP刺了这个(主要是练习)。除了显示给定目录中所有图像和PDF文件的缩略图列表之外,它不会执行任何操作。 (它也不是很复杂)。
如果您还想添加音频和/或视频文件的预览,并且您希望这些预览在 in 的Apache生成的列表中出现,那么您可能更喜欢使用客户端解决方案。
通过添加Javascript功能,您可以解析列表,并为您感兴趣的每个文件插入预览到列表中。 prettyAutoIndex项目就是这样做的。我没有亲自使用它,但它看起来很漂亮:-)它似乎没有积极开发,但如果它工作,它并不是真的必须。
如果它不是你想要的,你可以用Javascript编写代码,那么自己创建一些东西应该不会太难。
如果您决定创建服务器或客户端解决方案,那么创建具有某些功能的文件并使用headername
从Apache Config调用它应该不会复杂得多:
<IfModule mod_autoindex.c>
HeaderName /path/to/header.file
</IfModule>
不幸的是有一些问题,所以我建议花点时间阅读the mod_autoindex manual的相关部分。