.htaccess测试ENV是否为true或已定义



如果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>

相关内容

  • 没有找到相关文章

最新更新