htaccess从Basic Auth中排除多个url

时间:2016-06-05 14:01:36

标签: apache .htaccess basic-authentication .htpasswd

嗨我需要在测试阶段保护我的应用程序。

关于从Basic Auth

中排除一个网址,我读了这个post

但我想排除2个网址:

  

/ API / *

     

/的OAuth / V2 /令牌

因此整个应用程序将受到保护,除了那两个将公开的网址。否则我无法访问我的api路线。

我现在的.htaccess是:

# Protect the app with password
AuthUserFile /home/master/public_html/web/.htpasswd
AuthName "Protected"
AuthType Basic
Require valid-user

所以我猜我应该需要某种类型或正则表达式:

SetEnvIf Request_URI ^/api/ noauth=1

我怎么能有OR条件?

3 个答案:

答案 0 :(得分:3)

尝试:

SetEnvIf Request_URI ^/(api/|oauth/V2/token) noauth=1

您可以排除uris,只需使用 |

栏将它们分开

答案 1 :(得分:1)

您可以将Require包含在另一个指令中,例如DirectoryLocation

<Location /api/>
Require all granted
</Location>

<Location /oauth/v2/token>
Require all granted
</Location>

没有问过,但是Getting it working说的是.htpasswd

  

此文件应放置在无法从网络访问的位置。这样人们就无法下载密码文件。

所以你不应该把.htpasswd放在public_html里面。

答案 2 :(得分:1)

Apache 2.4 身份验证/访问控制自 2.2 以来已更改。 这是新语法:

AuthType Basic
AuthUserFile /home/master/public_html/web/.htpasswd
AuthName "Protected"
SetEnvIf Request_URI ^/(api/|oauth/V2/token) noauth=1
<RequireAny>
  Require env noauth
  Require env REDIRECT_noauth
  Require valid-user
</RequireAny>