无法从 http 基本身份验证中排除路由
Cannot exclude route from http basic auth
我正在尝试从 http 基本身份验证中排除特定路由。
我的 .htaccess 看起来像这样:
# Set an environment variable if requesting /dev
SetEnvIfNoCase Request_URI ^/dev/? DONT_NEED_AUTH=true
# Require authentication
AuthUserFile /etc/users
AuthName "This is a protected area"
AuthGroupFile /dev/null
AuthType Basic
# Set the allow/deny order
Order Deny,Allow
# Indicate that any of the following will satisfy the Deny/Allow
Satisfy any
# First off, deny from all
Deny from all
# Allow outright if this environment variable is set
Allow from env=DONT_NEED_AUTH
# or require a valid user
Require valid-user
# Rewrite url (make it pretty)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)$ index.php?path= [NC,L,QSA]
如果我使用完全相同的 .htaccess 路由“/dev”的 http 身份验证被删除,那么这会按预期工作,但问题是我想要路由“/dev”的密码保护,但我想删除路由“/dev/guest”的密码保护。
我尝试更改为以下内容:
SetEnvIfNoCase Request_URI ^/dev/guest/? DONT_NEED_AUTH=true
并转义中间的斜线:
SetEnvIfNoCase Request_URI ^/dev\/guest/? DONT_NEED_AUTH=true
但是这两个选项中的 none 有效,所有路由再次受密码保护。
此外,由于路由被重写,我想要允许的实际 url 是 "dev/index.php?path=guest" 但我不确定我是否应该关心它,因为其中一部分是查询字符串,并且最终用户永远不会直接使用该路由。
非常感谢任何帮助。
终于找到了可行的解决方案。
用过这个:
SetEnvIf Request_URI /dev/guest noauth=1
<RequireAny>
Require env noauth
Require env REDIRECT_noauth
Require valid-user
</RequireAny>
我正在尝试从 http 基本身份验证中排除特定路由。
我的 .htaccess 看起来像这样:
# Set an environment variable if requesting /dev
SetEnvIfNoCase Request_URI ^/dev/? DONT_NEED_AUTH=true
# Require authentication
AuthUserFile /etc/users
AuthName "This is a protected area"
AuthGroupFile /dev/null
AuthType Basic
# Set the allow/deny order
Order Deny,Allow
# Indicate that any of the following will satisfy the Deny/Allow
Satisfy any
# First off, deny from all
Deny from all
# Allow outright if this environment variable is set
Allow from env=DONT_NEED_AUTH
# or require a valid user
Require valid-user
# Rewrite url (make it pretty)
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*)$ index.php?path= [NC,L,QSA]
如果我使用完全相同的 .htaccess 路由“/dev”的 http 身份验证被删除,那么这会按预期工作,但问题是我想要路由“/dev”的密码保护,但我想删除路由“/dev/guest”的密码保护。
我尝试更改为以下内容:
SetEnvIfNoCase Request_URI ^/dev/guest/? DONT_NEED_AUTH=true
并转义中间的斜线:
SetEnvIfNoCase Request_URI ^/dev\/guest/? DONT_NEED_AUTH=true
但是这两个选项中的 none 有效,所有路由再次受密码保护。
此外,由于路由被重写,我想要允许的实际 url 是 "dev/index.php?path=guest" 但我不确定我是否应该关心它,因为其中一部分是查询字符串,并且最终用户永远不会直接使用该路由。
非常感谢任何帮助。
终于找到了可行的解决方案。
用过这个:
SetEnvIf Request_URI /dev/guest noauth=1
<RequireAny>
Require env noauth
Require env REDIRECT_noauth
Require valid-user
</RequireAny>