Apache2: Позвольте индексацию каталога, но ограничьте доступ к файлу типом

Я должен настроить свой сервер 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>
2
задан 10 October 2014 в 11:22
2 ответа

Вам также необходимо разрешить индексные файлы:

<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 .

Надеюсь, это поможет.

4
ответ дан 3 December 2019 в 10:03

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>
0
ответ дан 3 December 2019 в 10:03

Теги

Похожие вопросы