1

我目前正在尝试将规则应用于几个现代浏览器。我的浏览器检测基本上是这样工作的(例如 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 ?

4

2 回答 2

0

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

于 2012-09-15T15:32:00.687 回答
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 ...
于 2012-09-15T16:00:16.447 回答