Я должен настроить свой сервер Apache2 (версия 2.2.22), таким образом, что я позволяю автоиндексировать корневой папки WWW и ее подкаталогов, но ограничиваю доступ (т.е. ограничьте загрузку) только к ряду определенных типов файлов (т.е. .txt и .log). Другими словами, кто-либо видит, какие файлы присутствуют, но только определенные типы файлов могут быть загружены.
Я придумал следующее, которое действительно ограничивает загрузку просто указанными типами файлов, но все URL для индекса каталога возвращают 403 Запрещенных.
<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 будет искать их (например, index.html
, index.cgi
,. ..) но все они запрещены. Я не уверен, почему, но я полагаю, что Apache не может даже проверить наличие этих файлов, а затем отправляет 403.
Если Apache может проверить отсутствие этих файлов индекса, он создаст индекс каталога, и для этого потребуется директива
, так как имя файла индекса - "".
Вы можете найти информация в файле журнала ошибок, несколько строк вроде:
client denied by server configuration: /var/www/index.html
И поскольку вы хотите, чтобы список запрещенных файлов тоже был, вам нужно добавить:
IndexOptions ShowForbidden
, например, после Options Indexes FollowSymLinks
.
Существует множество вариантов для индексов каталогов, вы можете найти их в документе apache .
Надеюсь, это поможет.
FilesMatch
должен попадать во все возможные записи из DirectoryIndex
и пустая строка. Если у вас есть это:
DirectoryIndex index.html index.html.var index.php
, то это ваше совпадение:
Возможно, проще всего установить DirectoryIndex
, а затем сопоставить:
DirectoryIndex index.html
<Files ~ ^index\.html$|^$>
<Limit GET HEAD>
Order Allow,Deny
Allow from all
</Limit>
</Files>