我正在尝试设置一个网站,以便我需要用户名和密码才能访问该网站,但对于特定位置,需要不同的用户名和密码,而更通用的用户名和密码不适用于该位置。
这是我目前的 httpd.conf:
<Location "/store/dashboard">
AuthType Basic
AuthName "Please Enter Password"
AuthUserFile /home/user/webapps/blue_webapp/.htpasswd
Require user blueadmin
</Location>
<Location "/">
AuthType Basic
AuthName "Please Enter Password"
AuthUserFile /home/user/webapps/blue_webapp/.htpasswd
Require user blue
</Location>
问题是第二个位置块似乎覆盖了第一个。当我将第二个位置块更改为需要有效用户时,我可以使用 blueadmin 登录到 /store/dashboard 位置,但这也意味着可以使用 blueadmin 登录到网站的其余部分,这不是我想要的。
我怎样才能解决这个问题?
答案1
我无法发表评论,所以我必须发送答案。
问题是(据我所知):您想访问,/store/dashboard
但您还需要查看权限,/
因为/store/dashboard
它是的子目录/
。
您可以使用子域名:
/
=>example.com
/store/dashboard
=>dashboard.example.com
然后您可以/必须使用 2 个具有自己/
目录的 vhost。
但我不确定。
答案2
问题是第二个位置块似乎覆盖了第一个位置块。
是的。
我觉得我肯定在这里遗漏了一些东西,但你只需要反转你的两个<Location>
块:
<Location "/">
:
Require user blue
</Location>
<Location "/store/dashboard">
:
Require user blueadmin
</Location>
现在,用户blue
可以访问除 之外的整个网站/store/dashboard
。并且blueadmin
只能访问/store/dashboard
而不能访问网站的其余部分。换句话说,“第二个位置块覆盖第一个”。这似乎是您所需要的?
然而,这种情况的一个潜在问题是blueadmin
无法访问任何(可能是共享) 资源超出/store/dashboard
URL 树的范围。但我认为这在您的场景中不是问题?