繁体   English   中英

绕过特定URI的.htaccess授权,包括查询字符串

[英]Bypass .htaccess authorization for specific URI including query strings

我有一个基于各种查询字符串加载的PHP Web应用程序。 我需要应用程序才能要求身份验证,除非传递特定的查询字符串。

例如,如果URL是example.com/app/?Setting1=true,我想强制进行身份验证。

但是,如果URL是example.com/app/?Setting1=true&Setting2=true,我想绕过身份验证

我接近使用SetEnvIf Request_URI我想要的东西,但我不知道如何将查询字符串变量包含到Request_URI中。

SetEnvIf Request_URI "(/app/test)$" allow

Order Deny,Allow

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null

#Allow valid-user
Deny from all
Allow from env=allow
Satisfy any

我想要这样的东西:

SetEnvIf Request_URI "(/app/?Setting1=true&Setting2=true)$" allow

Order Deny,Allow

AuthType Basic
AuthName "Restricted Area"
AuthUserFile /home/path/.htpasswd
AuthGroupFile /dev/null

#Allow valid-user
Deny from all
Allow from env=allow
Satisfy any

非常感谢您的任何建议。

RewriteEngine On
SetEnvIf Request_URI ".*" allow=0
RewriteCond %{QUERY_STRING} ^(?:.*[&?])?Setting1=true&Setting2=true$
RewriteRule ^ - [E=allow:1]
RewriteCond %{QUERY_STRING} ^(?:.*[&?])?Setting2=true&Setting1=true$
RewriteRule ^ - [E=allow:1]
<If "%{ENV:allow} == '0'">
        AuthUserFile /home/path/.htpasswd
        AuthType Basic
        AuthName "Restricted Access"
        Require user valid-user
</If>

注意:

  • SetEnvIf不支持查询字符串参数。 请参考以下链接。

mod_setenvif

它也可以使用mod_rewrite模块设置环境变量:

mod_rewrite的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM