mod_rewriteのRewriteCond directiveを使用して、報告されたユーザーエージェントの名前に対してテストすることができます。あなたのxyディレクトリに置かれた.htaccessファイルでは、次のようになりたい:これは恒久的にopera.htmlする彼らのユーザーエージェント文字列のどこかにオペラを持っているブラウザをリダイレクトします
RewriteCond %{HTTP_USER_AGENT} Opera
RewriteRule ^abc.html$ http://example.com/xy/opera.html [R=301]
。ユーザーエージェントがuseragentstring.comで自分自身を識別する方法のまともなリストを見つけることができます。多くのユーザエージェント文字列は実際には "Mozilla"で始まりますが(歴史的な理由から)、文字列にブラウザ名(IEは "MSIE")が含まれているかどうかを調べるだけで十分です。
問題は、HTTP_USER_AGENT
の文字列がブラウザによって報告され、ブラウザでは、必要なものがかなり報告される可能性があります。 Operaには、IEやFFとして偽装するオプションも組み込まれています。一般的に、ユーザエージェント文字列に基づいてブラウザを盗聴すると、最終的には見逃してしまい、ユーザが迷惑をかける可能性が高くなります。私は、自動リダイレクションを無効にする方法をユーザに任せておくことを強くお勧めします。
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} Opera
RewriteRule ^abcd.html$ opera.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} MSIE
RewriteRule ^abcd.html$ ie.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} Chrome
RewriteRule ^abcd.html$ chrome.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} Safari
RewriteRule ^abcd.html$ safari.html [NC,L]
RewriteCond %{HTTP_USER_AGENT} Firefox
RewriteRule ^abcd.html$ firefox.html [NC,L]
RewriteRule ^abcd.html$ default.html [L]
Lフラグは、ブラウザ自体を報告した場合ので、そのルールは、そのパスで実行される最後であることを確認する:
ので、このようなものは、最初のアプローチとして働くかもしれませんFirefox、Safari、MSIE、Operaを含む文字列を使用すると、一致する最初のルール(この場合Opera)がランディングページを決定します。このバージョンはソフトリダイレクトを実行します(ブラウザのアドレスバーは変更されません)。難しいR = 301のリダイレクトが必要な場合は、リンク先ページのURL全体(例:RewriteRule ^abcd.html$ http://example.com/xy/opera.html [NC,L,R=301]
)を必ず入力してください。私は実際にそれがいくつかのユーザーにとって失敗するかどうかについてはあまり心配していません。実際には100%の実用的なソリューションは期待していませんが、85%に近いものは問題ありません。 – vinny
明確にするために、私はこのコードをまとめましたが、これはあなたによく見えますか?
RewriteCond %{HTTP_USER_AGENT} Opera RewriteRule ^abc.html$ opera.html [R=301] RewriteCond %{HTTP_USER_AGENT} Mozilla RewriteRule ^abc.html$ ff.html [R=301]
もう1つの問題は、chromeもMozillaを使用したことです。これは、chromeユーザーにとってリダイレクトが正確ではないことを意味します。 – vinny
サンプル実装を追加しました。私のマシンで動作するようですが、テストしてください:)。 –