我需要configuration我的Apache2服务器(版本2.2.22),使我可以自动索引WWW根文件夹及其子目录,但限制访问(即限制下载)只是一组特定的文件types(即。 txt和.log)。 换句话说,任何人都可以看到什么文件存在,但只能下载某些文件types。
我已经提出了下面的限制下载只是指定的文件types,但目录索引的所有URL返回403 Forbidden。
<Directory /var/www/> Options Indexes FollowSymLinks SetOutputFilter DEFLATE AllowOverride None Order allow,deny <FilesMatch ""> Order deny,allow allow from all </FilesMatch> <FilesMatch ".+\.(?!(txt|log)$)[^\.]+?$"> Order allow,deny deny from all </FilesMatch> </Directory>
您还需要允许索引文件:
<FilesMatch "index\."> Order allow,deny allow from all </FilesMatch>
因为Apache将search它们(如index.html,index.cgi,…),但它们都是被禁止的。 我不知道为什么,但我想Apache甚至不能检查这些文件的存在,然后发送一个403.如果Apache可以检查这些索引文件的不存在,他将创build目录索引,并且需要<FilesMatch "">指令,因为索引文件名是”“。
您可以在错误日志文件中find这些信息,如下所示:
client denied by server configuration: /var/www/index.html
而且因为你想禁止的文件也列出来,所以你需要添加
IndexOptions ShowForbidden
例如Options Indexes FollowSymLinks 。 目录索引有很多选项可以在apache文档中find。
希望这可以帮助。