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]は次のルールにのみ適用され、次の2つには適用されないためだと思います)。これを機能させる方法はありますか、それともブラウザごとに1回RewriteRuleをリストする必要がありますか?

4

2 に答える 2

0

RewriteCond ディレクティブを括弧で囲むことはできないため、((A と B) または (C と D)) をチェックするような一連の条件を設定することはできません。そのため、ブラウザーごとに RewriteRule ディレクティブを使用して 1 組のテストを使用する必要があります。

于 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 に答える