![条件字符串 Htaccess](https://linux22.com/image/746328/%E6%9D%A1%E4%BB%B6%E5%AD%97%E7%AC%A6%E4%B8%B2%20Htaccess.png)
我需要验证环境变量是否存在,并且其值是否等于“cloudflare”,以防万一拒绝访问。
我测试了好几次,还是没能成功。这是我的测试代码。
RewriteEngine on
RewriteCond %{ENV:AH_SITE_ENVIRONMENT} prod
RewriteCond %{ENV:HTTP_CDN_LOOP} !cloudflare [NC,OR]
RewriteCond %{ENV:HTTP_CDN_LOOP} !^$
RewriteRule ^(.*)$ - [F,L]
谢谢您的帮助
答案1
RewriteCond %{ENV:HTTP_CDN_LOOP} !cloudflare [NC,OR] RewriteCond %{ENV:HTTP_CDN_LOOP} !^$
通过检查变量不是包含“cloudflare”或者是不是空,那么它将始终被阻止,因为当它包含“cloudflare”时,它不为空!(第二个条件成功,规则被处理。)
检查环境变量是否存在的唯一方法是检查它是否包含某物,因为您无法区分中的“不存在”和“空” .htaccess
。
例如:
RewriteCond %{ENV:MY_VAR} .
RewriteCond %{ENV:MY_VAR} !=cloudflare
第一个条件检查环境变量是否存在且至少包含 1 个字符。第二个条件检查值是否存在确切地等于“cloudflare”。这两个条件是隐式 AND 关系,因此两个条件都必须成功,规则才能得到处理。