.htaccess 文件中子目录的身份验证

.htaccess 文件中子目录的身份验证

我有以下结构:

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

我想在根目录中的 .htaccess 中添加 AuthType Basic,这样 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>

但它不起作用

答案1

你不能<Directory>在文件中使用容器.htaccess。(.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被视为相对于已定义的服务器根目录否则,您应该指定绝对文件系统路径,例如:

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

相关内容