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

.htaccess пароль защищает файл в определенном каталоге

У меня есть файлы с одинаковыми именами в разных каталогах на серверах (пример: stats.php), и я хочу защитить паролем некоторые из них (файл .htaccess в корневом каталоге). Я попробовал «FilesMatch» с путем к файлу, и это не сработало, и я попытался добавить путь «Каталог» следующим образом, та же проблема.

<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 Файлы (или «распределенные файлы конфигурации») позволяют вносить изменения в конфигурацию для отдельных каталогов. Файл, содержащий одну или несколько директив конфигурации, помещается в конкретный каталог документа, и директивы применяются к этому каталогу и всем его подкаталогам.

В <Directory> Директива разрешено только в конфигурация сервера и виртуальный хост контексты. В .htaccess file - это его эквивалент, помещенный непосредственно в каталог. У вас есть два варианта:

  • Создайте /var/www/vhosts/folder/httpdocs/directory/.htaccess с <FilesMatch "stats.php">. Это единственный способ, если у вас нет доступа к конфигурации сервера.
  • Поместите <Directory /var/www/vhosts/folder/httpdocs/directory/> в конфигурация сервера или в виртуальный хост. Это лучше по производительности, поскольку он загружается один раз при запуске Apache, а не при каждом запросе.

Если вы используете Apache 2.4, вы можете использовать Если директива который соответствует запросу, чтобы определить, требуется ли авторизация, а именно:

<If "%{REQUEST_URI} =~ /stats.php$/">
    AuthName "Private file"
    AuthType Basic
    AuthUserFile /var/www/whatever/.htpasswd
    Require valid-user
    ErrorDocument 401 "Authorization Required"
</If>