У меня есть файлы с одинаковыми именами в разных каталогах на серверах (пример: stats.php), и я хочу защитить паролем некоторые из них (файл .htaccess в корневом каталоге) . Я попробовал "FilesMatch" с путем к файлу, и это не сработало, и я попытался добавить путь "Directory" следующим образом, та же проблема.
<Directory /var/www/vhosts/folder/httpdocs/directory/>
<FilesMatch "stats.php">
AuthName "Private file"
AuthType Basic
AuthUserFile /var/www/whatever/.htpasswd
require valid-user
</FilesMatch>
</Directory>
Один файл .htaccess
в корневом каталоге для этой цели не работает. Вы должны поместить новый файл .htaccess
в каждый каталог, где вам нужны настройки, отличные от его родительских (-ых):
.htaccess
файлы (или «файлы распределенной конфигурации») предоставляют способ для внесения изменений в конфигурацию для отдельных каталогов. Файл, содержащий одну или несколько директив конфигурации, помещается в конкретный каталог документов, и директивы применяются к этому каталог и все его подкаталоги .
Директива
разрешена только в контекстах конфигурации сервера и виртуального хоста . Файл .htaccess
является его эквивалентом, помещенным непосредственно в каталог. У вас есть два варианта:
/var/www/vhosts/folder/httpdocs/directory/.htaccess
с
.Это единственный метод, если у вас нет доступа к конфигурации сервера.
в конфигурацию сервера или в виртуальном хосте . Это лучше по производительности, так как он загружается один раз при запуске Apache, а не при каждом запросе. Если вы используете Apache 2.4, вы можете использовать директиву If , которая соответствует запросу, чтобы определить, требуется ли авторизация или нет, следующим образом:
<If "%{REQUEST_URI} =~ /stats.php$/">
AuthName "Private file"
AuthType Basic
AuthUserFile /var/www/whatever/.htpasswd
Require valid-user
ErrorDocument 401 "Authorization Required"
</If>