排除受保护的子 URL 在 Apache 2.4 上不起作用?

meg*_*off 8 .htaccess http-basic-authentication apache-2.4

我尝试从受保护的网站中排除子网址“/shop/api”。它在 Apache/2.2.15 上的不同服务器上运行良好,但现在不适用于 Apache/2.4.7?它总是要求进行基本身份验证。知道我做错了什么吗?

AuthType Basic
AuthName 'Authentication required'
AuthUserFile /var/www/vhosts/pwd/.htpasswd

# Allow access to excluded diretories
SetEnvIf Request_URI ^/shop/api/  noauth=1
Order deny,allow
Satisfy any
Deny from all
Require valid-user
Allow from env=noauth
Run Code Online (Sandbox Code Playgroud)

meg*_*off 11

正如“lain”所指出的,apache 2.4 Auth/Access control 的东西自 2.2 以来已经发生了变化。所以我需要修改它如下:

AuthType Basic
AuthName 'Authentication required'
AuthUserFile /var/www/vhosts/pwd/.htpasswd
# Allow access to excluded directories
SetEnvIf Request_URI /shop/api  noauth=1
<RequireAny>
  Require env noauth
  Require env REDIRECT_noauth
  Require valid-user
</RequireAny>
Run Code Online (Sandbox Code Playgroud)

此外,我不得不添加,Require env REDIRECT_noauth因为 PHP 正在使用一些重定向,这会保持 env 变量noauth

  • 在互联网上尝试了一百万个解决方案后,这个解决方案奏效了。谢谢你。 (3认同)