如果ENV为真或已定义(如果未定义,则假定为假),则需要运行一组RewriteCond语句。我一直在尝试使用:
RewriteCond %{ENV:IS_MOBILE} ^true$
RewriteCond ...
和(不确定这是否有效)
RewriteCond %{ENV:IS_MOBILE} !=true
RewriteCond...
但似乎都不起作用。我能帮上忙吗?
下面是一个现实生活中的例子,应该可以帮助您找到解决方案:
如果主机以" "开头或";static"然后创建一个名为"STATIC"的环境变量;并将其设置为"1":
RewriteCond %{HTTP_HOST} ^(s|static).mysite.com$
RewriteRule (.*) - [QSA,E=STATIC:1]
那么你可能会看到:如果我的hosts是"static"然后,如果文件被认为是"静态的";(img等)然后停止:
RewriteCond %{ENV:STATIC} 1
RewriteRule (.*).(pdf|jpg|jpeg|gif|png|ico)$ - [L]
现在,如果您想确定变量不存在,只需检查它是否为空。下面是我的规则:它检查变量是否为空,如果为空,就会出现错误= 404(模拟"not found"):
RewriteCond %{ENV:STATIC} !^$
RewriteRule (.*) /404.php [L]
在你的例子中,如果你的env不是空的,你认为它是真的:
RewriteCond %{ENV:IS_MOBILE} !^$
RewriteCond...
在你的情况下,如果你的env是相等的,正好等于字符串 true
你认为它是"正确的":
RewriteCond %{ENV:IS_MOBILE} =true
RewriteCond...
我认为你需要先使用IfDefine
来包装代码
<IfDefine %{ENV:IS_MOBILE}>
RewriteCond %{ENV:IS_MOBILE} true
</IfDefine>