我有一个大型的文件系统,里面充满了我使用mod_autoindex通过apache2“共享”的文件。
服务器的根级文件夹包含五个目录,我想对根级别的Description列中的每个文件夹进行注释,并且只在根级别有注释。 例如,根文件夹可能如下所示:
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没有任何反应。
在挖掘谷歌我发现,你应该删除主要的斜杠。 我添加AddDescription "Can't do a drum roll" ringo/然后我得到这个描述针对每个单一的文件和'ringo'目录,我不想要的子目录。
此外,我没有得到这种说明针对根级别列表中的ringo /文件夹,这是我真正想要的。
我注意到,在apache2文档中,该指令中的文件描述符是“文件扩展名,部分文件名,通配符expression式或文件描述的完整文件名” ,所以我可以看到它为什么要通过完整的目录结构,但我真正想要的是能够对五个顶级目录进行描述,而不是在其他地方。
我假设正则expression式不是语法的一部分,因为文档没有提及它,也因为它没有工作。 请注意,文档中说你需要主导的斜线,而且也不是这种情况。
如果您的站点的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什么也不是。
包含/匹配被访问文件的整个path的任何部分。
example.com的DocumentRoot是/var/www ,则页面http://example.com/myfolder/myfile.html的整个path是/var/www/myfolder/myfile.html 。 file将被隐含地加上一个*/来确保指定文件夹名称的完全匹配。 例如, myfolder/myfile.html实际上表示*/myfolder/myfile.html ,因此它匹配http://example.com/myfolder/myfile.html )和与http://example.com/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 )或http://example.com/subdir/phpinfo.php ),并且不匹配http://example.com/phpinfo/whatever.php ( whatever.php )。 第一场比赛首先适用,任何下一场比赛将被跳过。
ref: Apache 2.4 doc
根级的结构是静态的,会有那五个目录,只有那五个目录?
那么最简单的方法可能是假的。 只要创build一个看起来像是由mod_autoindex生成的静态HTML页面mod_autoindex 。 手动添加说明到该静态页面。 让其余的页面由mod_autoindex生成。
同时放下斜线,你就完成了:
AddDescription "Can't do a drum roll" ringo