Я защищаю файлы CSV в этом каталоге. Они исчезают, когда устанавливается эта директива авторизации. Он появляется, когда я его удаляю. Я хочу иметь возможность хотя бы видеть файлы, но при доступе к этим файлам будет предлагаться запрос на аутентификацию.
Когда список каталогов генерируется с использованием mod_autoindex, внутренний подзапрос выдается для каждого файла, который появляется в списке каталогов. При использовании <FilesMatch "^(.*).csv$"> контейнер, то он также обрабатывается для этих подзапросов и, следовательно, запись этих файлов в список каталогов также блокируется.
Альтернатива использованию <FilesMatch> директива заключается в использовании <If> выражение и тест против ЗАПРОС переменная сервера вместо этого. Это тогда только успешный когда .csv файлы фактически запрашиваются пользователем, а не при просмотре списка каталогов.
Например:
# Списки каталогов (mod_autoindex) должны быть включены
Опции +Индексы
# Защитить файлы CSV от доступа, но они все еще видны в списке каталогов
<If "%{THE_REQUEST} =~ m#\.csv(\s|\?)#">
AuthName "Диалоговое приглашение"
Основной тип авторизации
AuthUserFile /xxxxx/тест
Требовать действительного пользователя
</Если>
ЗАПРОС содержит первую строку HTTP-запроса. например. ПОЛУЧИТЬ /foo/test.csv HTTP/1.1 (в случае запроса GET на /foo/test.csv) — и не меняется на протяжении всего запроса. Поэтому при запросе самого каталога, например. /фу/ то вложенный блок не обрабатывается и листинг этих файлов не блокируется.
Дополнительная сложность заключается в том, что ЗАПРОС содержит весь запрошенный URL-адрес, который может включать строку запроса. Итак, чек на (\с|\?) (т.е. пробел или же буквальный ?) заключается в том, чтобы избежать обхода проверки пароля, просто включив строку запроса. например. /foo/test.csv? что-нибудь.