条件字符串 Htaccess

条件字符串 Htaccess

我需要验证环境变量是否存在,并且其值是否等于“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 关系,因此两个条件都必须成功,规则才能得到处理。

相关内容