Я защищаю файлы 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? что-нибудь
.