【问题标题】:detecting multiple browsers and versions using mod_rewrite使用 mod_rewrite 检测多个浏览器和版本
【发布时间】:2012-09-16 00:00:16
【问题描述】:

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

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 2016-03-21
        • 1970-01-01
        • 2019-01-24
        • 1970-01-01
        • 2014-09-14
        • 2011-03-10
        相关资源
        最近更新 更多