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

k2fxgqgv  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(110)

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

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

字符串
(不确定是否有效)

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


但似乎都不起作用。有什么办法吗?

knpiaxh1

knpiaxh11#

这里有一个真实的例子,应该可以帮助你找到解决方案:
如果主机以“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是equals,正好等于字符串true,你假设它是“true”:

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


希望这对你有帮助。

qvtsj1bj

qvtsj1bj2#

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

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

字符串

相关问题