3

htaccessAndroidクライアントをあるURLにリダイレクトし、iPhoneクライアントを別のURLにリダイレクトするファイルを構成するにはどうすればよいですか?

4

1 に答える 1

10

できますよ!ユーザー エージェントを調べて、条件が満たされた場合にリダイレクトを実行するだけです。

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} "android" [NC]
RewriteRule ^(.*)$ /android/$1 [L,QSA]

RewriteCond %{HTTP_USER_AGENT} "iphone|ipod|ipad" [NC]
RewriteRule ^(.*)$ /ios/$1 [L,QSA]

ここで何が起こっているのかを分析しましょう。まず、RewriteEngineがオンになっていることを確認します (v.重要)。行は、その後RewriteCondに続くルールが適用されるために満たされなければならない条件です。この場合の条件は、リクエストを行っているデバイスのユーザー エージェントに特定のキーワードが出現することです。最初の条件は単語「android」に一致し、2 番目の条件は文字列「iphone」、「ipod」、「ipad」のいずれかに一致します。テキスト マッチングは、正規表現を使用して行われます。

それぞれの後の行RewriteCondは、デバイスに応じて URL の書き換え (エンド ユーザーにはリダイレクトとして表示されるもの) を行う実際のルールです。このルールでは、リクエスト全体を (再び正規表現で) 取得し、先頭に/androidorを追加するように指示されてい/iosます。表示される は、書き換え中の$1実際のリクエスト文字列を表しています。

  • [NC]一致は大文字と小文字を区別しない (大文字と小文字を区別しない) ことを意味します。IE Android == aNdroidIOS == iOSなど...
  • [L]現在のルールが最後のルールであり、他の条件やルールは実行されないことを意味します。androidAndroid デバイスと iOS デバイスの違いだけを探している場合は、単純なorで解決できる可能性がありますiphone/ipad/ipod。特定のデバイスを検出したい場合は、そのユーザー エージェントをより具体的に一致させる必要があります。
于 2012-12-14T18:05:44.257 に答える