9

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

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

和(不确定这是否有效)

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

但似乎两者都不起作用。我有什么办法可以做到这一点?

4

2 回答 2

12

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

如果主机以“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]

在您的情况下,如果您的 env 不为空,您认为这是真的:

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

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

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

希望这可以帮助。

于 2011-11-14T15:25:51.167 回答
-2

我认为您需要先IfDefine使用

<IfDefine %{ENV:IS_MOBILE}>
     RewriteCond %{ENV:IS_MOBILE} true
</IfDefine>
于 2018-12-10T17:27:27.687 回答