我正在使用 SetEnvIf 和 Deny 来阻止对 .htaccess 中某些国家/地区的访问。
但我需要从该阻止中排除某些 URL,因此我为这些 URL 设置另一个环境变量。
如何根据变量 1 和变量 2 的组合进行拒绝?
SetEnvIf GEOIP_COUNTRY_CODE xx BlockedCountry
SetEnvIf Request_URI "^/important" NeverBlock
在伪代码中我现在想这样做:
Deny from env=BlockedCountry && !NeverBlock
From 阿帕奇文档 https://httpd.apache.org/docs/2.4/mod/mod_access_compat.html#deny :
语法:Deny from all|host|env=[!]env-variable
[主机|env=[!]环境变量] ...
这意味着您可以将条件一个接一个地组合起来(中间没有“布尔”运算符)。
所以在你的情况下,它应该看起来像这样
Deny from env=BlockedCountry env=!NeverBlock
Update
从你所说的来看,这似乎意味着OR
条件而不是AND
(你想要什么)。为此,您可以使用此解决方法
SetEnvIf GEOIP_COUNTRY_CODE xx MustBeBlocked
SetEnvIf Request_URI "^/important" !MustBeBlocked
Deny from env=MustBeBlocked
使用这种技术,您可以根据情况设置/取消设置环境变量,从而模拟AND
健康)状况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)