.htaccess测试ENV是真还是定义

Ash*_*ley 7 .htaccess env

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

RewriteCond %{ENV:IS_MOBILE} ^true$
RewriteCond ...
Run Code Online (Sandbox Code Playgroud)

并且(不确定这是否有效)

RewriteCond %{ENV:IS_MOBILE} !=true
RewriteCond...
Run Code Online (Sandbox Code Playgroud)

但似乎都不起作用.我能做到这一点吗?

Oli*_*ons 11

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

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

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

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

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

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

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

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

RewriteCond %{ENV:IS_MOBILE} !^$
RewriteCond...
Run Code Online (Sandbox Code Playgroud)

在你的情况下,如果你的env是等于,正好等于字符串 " true"你认为它是"真":

RewriteCond %{ENV:IS_MOBILE} true
RewriteCond...
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.