.htaccess htaccess从基本身份验证中排除多个url

u7up0aaq  于 2023-08-06  发布在  其他
关注(0)|答案(3)|浏览(109)

我需要在测试阶段保护我的应用程序。
我读了这篇post关于从基本身份验证中排除一个URL的文章
但我想排除2个URL:
/API/*
/oauth/v2/token
因此,整个应用程序将受到保护,除了这两个URL,这将是公共的。否则我无法访问我的API路由。
我的.htaccess现在是:

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

字符串
所以我猜我应该需要一些sort或者regex在:

SetEnvIf Request_URI ^/api/ noauth=1


我怎么会有手术室的症状

piztneat

piztneat1#

Apache 2.4 Auth/Access Control自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>

字符串

xriantvc

xriantvc2#

试试看:

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

字符串
您可以排除多个URI。只需使用管道符号|将它们分开即可。

5w9g7ksd

5w9g7ksd3#

您可以将Require Package 在另一个指令中,如DirectoryLocation

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

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

字符串
没有问过,但Getting it working说的是.htpasswd
此文件应放置在无法从Web访问的位置。这样人们就无法下载密码文件。
所以你不应该把.htpasswd放在public_html里面。

相关问题