如果ENV为true或已定义(如果未定义,则假定为false),我需要运行一组RewriteCond语句。我一直在尝试使用:
RewriteCond %{ENV:IS_MOBILE} ^true$
RewriteCond ...
和(不确定这是否有效)
RewriteCond %{ENV:IS_MOBILE} !=true
RewriteCond...
但似乎都行不通。有什么办法可以做到吗?
最佳答案
这是一个现实生活中的示例,应该可以帮助您找到解决方案:
如果主机以“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...
希望这可以帮助。
关于.htaccess测试ENV是否为真或已定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8119846/