我有以下结构:
_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"