Auth Basic 要求我提供凭据两次

Auth Basic asks me for credential twice

提问人:debek 提问时间:9/23/2023 更新时间:9/23/2023 访问量:23

问:

我想

  1. 将我的域重定向到所有域的 https://www 始终,然后
  2. 如果来自特定域,例如 dev.example.com
  3. 例如,如果我来自 lb-example.com,我想不使用 Auth basic。

这是我的规则:

RewriteEngine 开启

RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

<If "%{HTTP_HOST} =~ /dev\.example\.com$/">
    AuthUserFile /usr/src/.htpasswd
    AuthType Basic
    AuthName "Password Protected"
    Require user XXX
</If>

输入 dev.example.com 时,它会要求我输入密码两次。你知道为什么吗?

我的基础设施看起来像这样: dev.example.com -> lb-example.com -> 应用

dev.example.com - 需要 Auth Basic lb-example.com - 不需要 Auth Basic

正则表达式 Apache .htaccess

评论

0赞 arkascha 9/23/2023
可能是因为您首先重定向到该名称的“www”变体。你为什么要这样做。您可以自己检查:打开浏览器的控制台,网络选项卡,检查哪个确切的请求收到要求身份验证的标头。最像第一个没有“www”,第二个有。请记住,从浏览器的角度来看,这些是完全独立的主机。
0赞 debek 9/24/2023
你对调试的看法是正确的。通常,我想知道为什么,因为 .htaccess 首先重定向到 www,然后检查 Auth Basic。因此,在这种情况下,此规则应仅适用于带有 www.
0赞 arkascha 9/24/2023
为什么会这样?没有任何因素可以仅仅因为一个模块决定应用规则而神奇地停止配置文件中指令的应用,这里是重定向。

答: 暂无答案