如何在htaccess中有条件地使用基本身份验证,并覆盖单个页面

时间:2018-06-09 22:38:06

标签: apache .htaccess authentication authorization

我使用的是Apache 2.4+,如果网址包含“#34; staging"在里面。那部分非常简单。更棘手的部分是我想要覆盖密码保护并使一个页面可公开访问(它是健康检查服务将用于检查网站的页面)。

以下是我的.htaccess文件的内容:

# Set the REQUIRE_AUTH environment variable if we should password protect
SetEnvIfNoCase HOST        staging           REQUIRE_AUTH
SetEnvIfNoCase Request_URI ^/privacy-policy$ !REQUIRE_AUTH

# Define the basic auth setup
AuthType Basic
AuthName "Staging Area"
AuthUserFile /var/app/current/public/.htpasswd
Require valid-user

# Allow all access, but challenge for a password if REQUIRE_AUTH
Order Allow,Deny
Allow from All
Deny from env=REQUIRE_AUTH
Satisfy any

它不起作用。如果我转到http://staging.mysite.com,我会得到用户名/密码挑战,如我所料。但是,如果我去http://staging.mysite.com/privacy-policy,那么我也会接受挑战。我希望不会在该页面上要求输入用户名和密码。

我知道正确设置了REQUIRE_AUTH变量。如果我访问根网站,则将其设置为1,如果我转到隐私政策页面,则表示未设置。

我怀疑这个问题可能出现在.htaccess的最后几行,但我并不乐观。任何帮助将不胜感激。

P.S。 - 还有一些与此类似的文章,但在这种情况下,没有一个解决方案非常有效。

0 个答案:

没有答案