.htaccess测试ENV是真还是定义

时间:2011-11-14 09:55:54

标签: .htaccess env

如果ENV为true或已定义(如果未定义,则假定为false),我需要运行一组RewriteCond语句。我一直在尝试使用:

RewriteCond %{ENV:IS_MOBILE} ^true$
RewriteCond ...

和(不确定这是否有效)

RewriteCond %{ENV:IS_MOBILE} !=true
RewriteCond...

但似乎都不起作用。我能以任何方式做到这一点吗?

2 个答案:

答案 0 :(得分:11)

这是一个真实的样本,可以帮助您找到解决方案:

如果主机以“s”或“static”开头,则创建一个名为“STATIC”的环境变量并将其设置为“1”:

RewriteCond %{HTTP_HOST} (s|static)\.mysite\.com$
RewriteRule (.*) - [QSA,E=STATIC:1]

然后您可能会寻找:如果我的主机是“静态”,那么如果文件被认为是“静态”(img等),那么停止:

RewriteCond %{ENV:STATIC} 1
RewriteRule (.*)\.(pdf|jpg|jpeg|gif|png|ico)$ - [L]

现在,如果您想确定该变量不存在,只需检查它是否为空。这是我之前的规则:它检查变量是否为空,如果是,则出现错误= 404(模拟“未找到”):

RewriteCond %{ENV:STATIC} !^$
RewriteRule (.*) /404.php [L]

在你的情况下,如果你的环境不是空的,你认为这是真的:

RewriteCond %{ENV:IS_MOBILE} !^$
RewriteCond...

在你的情况下,如果你的env是等于,完全等于字符串true”,你认为它是“真的”:

RewriteCond %{ENV:IS_MOBILE} true
RewriteCond...

希望这有帮助。

答案 1 :(得分:-1)

我认为您首先需要使用IfDefine包装代码

<IfDefine %{ENV:IS_MOBILE}>
     RewriteCond %{ENV:IS_MOBILE} true
</IfDefine>