我有一个大型文件系统,里面充满了文件,我使用 mod_autoindex 通过 apache2 来“共享”。
服务器的根级文件夹包含五个目录,我想对每个文件夹进行注释描述列位于根级别,并且仅在根级别。例如,根文件夹可能如下所示:
Index of /
Name Last modified Size Description
george/ 27-Feb-2011 15:50 -
john/ 27-Feb-2011 16:05 -
paul/ 19-Jun-2011 19:12 -
pete/ 12-Mar-2011 18:57 -
ringo/ 31-Oct-2011 18:42 -
如果我添加AddDescription "Can't do a drum roll" /ringo/
到 httpd.conf,什么也不会发生。
在使用 Google 搜索后,我发现应该删除前导斜杠。我添加了AddDescription "Can't do a drum roll" ringo/
该描述,然后得到了“ringo”目录中每个文件和子目录的描述,而这并不是我想要的。
此外,我不认为这种描述与林戈/根级别列表中的文件夹,这正是我真正想要的。
我注意到,在 apache2 文档中,该指令中的文件描述符是“要描述的文件的文件扩展名、部分文件名、通配符表达式或完整文件名”,所以我明白为什么它要经过完整的目录结构,但我真正想要的是能够对五个顶级目录进行描述,而其他地方则没有。
我假设正则表达式不是语法的一部分,因为文档中没有提到它,而且它不起作用。请注意,文档说你需要前导斜杠,但事实并非如此。
答案1
如果DocumentRoot
您的网站的 是/var/www
,您可以尝试以下规则集:
AddDescription " " */www/*/ringo
AddDescription " " */www/ringo?*
AddDescription "Can't do a drum roll" */www/ringo
诀窍是使用" "
(不匹配任何内容的文件/文件夹的默认内容)来使任何匹配ringo
但位于更深的目录中或在 之后有后缀的文件/文件夹无效ringo
。
要了解详细解释,您必须了解 AddDescription 的实际规则,这有点复杂:
句法:AddDescription string file [file] ...
string
不能为空。如果""
提供,则会发生错误。file
可以包含通配符*
ot?
。它们都可以匹配/
。file
以 开头/
不匹配任何内容。file
包含/
匹配所访问文件的整个路径的任何部分。- “完整路径”似乎是服务器上的绝对路径。例如,如果
DocumentRoot
某个网站的example.com
是/var/www
,则该页面的完整路径http://example.com/myfolder/myfile.html
是/var/www/myfolder/myfile.html
。 - 在这种情况下,
file
将隐式地在前面添加一个,*/
以确保与指定的文件夹名称完全匹配。例如,myfolder/myfile.html
实际上意味着*/myfolder/myfile.html
,因此它匹配http://example.com/myfolder/myfile.html
(/var/www/myfolder/myfile.html
)而不匹配http://example.com/prefixedmyfolder/myfile.html
(/var/www/prefixedmyfolder/myfile.html
)。 - 文件夹的文件名中没有尾随
/
。例如,myfolder/subfolder/
( ) 与文件夹( )*/myfolder/subfolder/
不匹配,但( ) 匹配。http://example.com/myfolder/subfolder
/var/www/myfolder/subfolder
myfolder/subfolder
*/myfolder/subfolder
- “完整路径”似乎是服务器上的绝对路径。例如,如果
否则,
file
匹配所访问文件的文件名的任何部分。- 例如,
hpin
匹配http://example.com/phpinfo.php
(phpinfo.php
) 或http://example.com/subdir/phpinfo.php
(phpinfo.php
),并且不匹配http://example.com/phpinfo/whatever.php
(whatever.php
)。
- 例如,
第一个匹配首先应用,并且任何后续匹配将被跳过。
參考文獻:Apache 2.4 文档
答案2
根级别的结构是否是静态的并且将具有这五个目录,并且只有这五个目录?
那么最简单的方法可能就是伪造它。只需创建一个看起来像是由 生成的静态 HTML 页面mod_autoindex
。手动将描述添加到该静态页面。让其余页面由 生成mod_autoindex
。
答案3
另外删除尾部的斜杠,就完成了:
AddDescription "Can't do a drum roll" ringo