Назад | Перейти на главную страницу

Ограничить индекс каталога для аутентифицированных пользователей

По сути, я пытаюсь ограничить индексирование каталогов аутентифицированными пользователями из файла htpasswd на моем сервере Apache. Вот что у меня есть на данный момент.

AuthUserFile C:\XXXXXXXXX\htpasswd
AuthGroupFile /dev/null
AuthName "Password Protected!"
AuthType Basic
<Limit DirectoryIndex>
require valid-user
</Limit>

Я подтвердил, что этот вид аутентификации работает для обычного доступа к каталогам или для файлов, если я заменю "DirectoryIndex" на "GET POST". Я попытался предположить, поместив здесь DirectoryIndex, но, похоже, это не сработало. Я погуглил эту проблему и рассмотрел ряд других вопросов здесь, о serverfault, и я в растерянности. Если кто-нибудь знает, как это сделать, было бы прекрасно.

Спасибо.

DirectoryIndex (часть mod_dir) устанавливает файл, который будет обслуживаться, когда клиент запрашивает каталог. Итак, чтобы ограничить доступ к этому файл, вам нужно использовать <Files> (или <FilesMatch>) директива. (Вы не можете ссылаться на файлы, DirectoryIndex директива относится к.)

Например, если ваш DirectoryIndex установлен на index.html, затем:

<Files "index.html">
    AuthUserFile C:\XXXXXXXXX\htpasswd
    AuthGroupFile /dev/null
    AuthName "Password Protected!"
    AuthType Basic
    Require valid-user
</Files>

Если у вас есть несколько возможных DirectoryIndex документы, то вы можете использовать <FilesMatch> контейнер, который принимает в качестве аргумента регулярное выражение. Например, если DirectoryIndex index.php index.html устанавливается тогда:

<FilesMatch "^index\.(html|php)$">
    # etc.
</FilesMatch>

Или под «индексированием каталогов» вы имеете в виду сгенерированные списки каталогов (mod_autoindex)? Но это не имеет ничего общего с DirectoryIndex сам, за исключением того, что (если он включен) список каталогов создается только тогда, когда DirectoryIndex документ не существует.

В этом случае, чтобы защитить только список каталогов (т.е. пустой каталог), вы также можете использовать Files контейнер, но укажите пустой файл. Например:

# Protect directory-listing only
<Files "">
    # etc.
</Files>

<Limit DirectoryIndex>

В Limit Директива ограничивает вложенные директивы указанным HTTP метод (ы) запроса (например, GET, POST и т. д.). DirectoryIndex является директивой Apache, а не методом HTTP-запроса, поэтому это недопустимо.