По сути, я пытаюсь ограничить индексирование каталогов аутентифицированными пользователями из файла 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-запроса, поэтому это недопустимо.