如果您使用的是Apache 2.4,SetEnvIf
则由于该Require
指令能够直接解释表达式,因此不再需要mod_rewrite解决方法:
AuthType Basic
AuthName "Please login."
AuthUserFile "/xxx/.htpasswd"
Require expr %{REQUEST_URI} =~ m
Require valid-user
Apache 2.4对待未按其分组的Require
指令,就像它们在一样,其行为类似于“或”语句。这是一个更复杂的示例,该示例演示了将请求URI和查询字符串都匹配到一起,并回退到需要有效用户的情况:<RequireAll>
<RequireAny>
AuthType Basic
AuthName "Please login."
AuthUserFile "/xxx/.htpasswd"
<RequireAny>
<RequireAll>
Require expr %{REQUEST_URI} =~ m
</RequireAll>
Require valid-user
</RequireAny>
本示例将允许访问,/callbacks/foo?secret_var=42
但需要使用的用户名和密码/callbacks/foo
。
请记住,除非您使用<RequireAll>
,否则Apache会尝试Require
按顺序匹配每个条件,因此请考虑您要首先允许哪些条件。
该Require
指令的参考在这里:https : //httpd.apache.org/docs/2.4/mod/mod_authz_core.html#require
而expr
分裂国家基准是在这里:https://httpd.apache.org/docs/2.4/expr.html