使用mod_rewrite检测多个浏览器和版本

时间:2012-09-15 14:44:20

标签: apache mod-rewrite

我目前正在尝试将规则应用于多个现代浏览器。我的浏览器检测基本上是这样的(例如Safari≥5,这可行):

RewriteCond %{HTTP_USER_AGENT} Version/(\d).*Safari/
RewriteCond %1 >4
RewriteRule ...

现在我想将多个检测链接在一起,并应用规则(如果它们中的任何一个匹配)。我试过这个:

RewriteCond %{HTTP_USER_AGENT} Version/(\d).*Safari/
RewriteCond %1 >4 [OR]
RewriteCond %{HTTP_USER_AGENT} Chrome/(\d\d)
RewriteCond %1 >22
RewriteRule ...

这不起作用(我怀疑因为[OR]仅适用于下一个规则,而不适用于下一个规则)。有没有办法让这个工作,或者我是否必须为每个浏览器列出一次RewriteRule?

2 个答案:

答案 0 :(得分:0)

您不能在RewriteCond指令周围括起括号,因此您不能拥有一组条件,以便您检查((A和B)或(C和D))。因此,您需要为每个浏览器使用一对带有RewriteRule指令的测试。

答案 1 :(得分:0)

[OR]指令不会影响链接在一起的多个条件。您需要分离2条条件链并复制规则:

RewriteCond %{HTTP_USER_AGENT} Version/(\d).*Safari/
RewriteCond %1 >4
RewriteRule ...

RewriteCond %{HTTP_USER_AGENT} Chrome/(\d\d)
RewriteCond %1 >22
RewriteRule ...