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

Аутентификация в файле .htaccess для подкаталогов

У меня такая структура:

_auth/
   ->.htpasswd
website1/
website2/
website3/
.htaccess

Я хочу добавить AuthType Basic к моему .htaccess в корневом каталоге, чтобы webiste1 / и website2 / требовали аутентификации, а website3 / оставались доступными без него. У всех трех сайтов есть собственный домен.

Я попытался:

<directory "/website1">
AuthType Basic
AuthName "Protected Area"
AuthUserFile "_auth/.htpasswd"
Require valid-user
</directory>

<directory "/website2">
AuthType Basic
AuthName "Protected Area"
AuthUserFile "_auth/.htpasswd"
Require valid-user
</directory>

Но это не работает

Вы не можете использовать <Directory> контейнеры в .htaccess файлы. (The .htaccess сам файл по сути каталог контейнер и каталог контейнеры не могут быть вложенными.)

Предполагая, что вы используете Apache 2.4 и /website1 и /website2 появляются как часть запрошенного URL-пути, тогда вы можете использовать выражение Apache.

Например:

<If "%{REQUEST_URI} =~ m#^/(website1|website2)/#">
    AuthType Basic
    AuthName "Protected Area"
    AuthUserFile "_auth/.htpasswd"
    Require valid-user
</If>

Обратите внимание, что Путь файла _auth/.htpasswd рассматривается как относительный к определенному ServerRoot. В противном случае вам следует указать абсолютный путь к файловой системе, например:

AuthUserFile "/abs/path/to/_auth/.htpasswd"