0

私がやろうとしているのは、特定の国コードを検出するように NGINX をセットアップすることです。This is in my actual site config file not my nginx.conf file.if ($geoip_country_code = IE) { rewrite ^(.*) http://link.com/for/Ireland;

私がやりたいことは、これにモバイル チェックを追加することです。たとえば、それがアイルランドであり、モバイルである場合、2 番目のリンクに移動します。これはこのレベルでも可能ですか?または、サーバーレベルで国を検出するだけで立ち往生しているので、ページが読み込まれているときやモバイル検出スクリプトを使用している場合など、より標準的な方法でモバイルを処理する必要があります。この方法で実行できることはわかっていますが、NGINX 構成の同じキャッチに検出を追加できるようにしたいと考えています。

すべての助けと情報をありがとう。

4

2 に答える 2

1

http://detectmobilebrowsers.comをご覧ください。nginx のコード スニペットがあります。最近、このようなnginx構成を行いましたが、正常に動作します。

于 2013-04-25T22:13:10.840 に答える
0

モバイルのユーザーエージェントには信じられないほどの違いがあるため、nginx 構成よりもコードリダイレクトを使用する方がはるかに優れています。if特に、 nginx で一連のステートメントを呼び出すコストは取るに足らないものです。

この Web サイトには、古いものからそれほど古いものまで、モバイル ユーザー エージェントの非網羅的なリストがあります。控えめに言っても、リストが実際には非常に巨大であることがすぐにわかります。ここでは、iPhone、iPod、および iPad だけに注目しましょう。それらは非常に簡単に区別できます。

Mozilla/5.0 (デバイスタイプ; cpu タイプ; Mac OS X のような CPU; en) AppleWebKit/420+ (Gecko のような KHTML) バージョン/3.0 Mobile/1A543a Safari/419.3

したがって、これは問題になりません。ただし、文字列は、Safari のデスクトップ ユーザー エージェントを含む他のものと非常によく似ています...そして、これは最も簡単な電話用です。Android にはそのような単純さはありません。たとえば、HTC Desire を見てみましょう。

Mozilla/5.0 (Linux; U; Android 2.1-update1; de-de; HTC Desire 1.19.161.5 Build/ERE27) AppleWebKit/530.17 (Gecko のような KHTML) バージョン/4.0 Mobile Safari/530.17

OS の識別子が 3 番目のフィールドに変更されました。つまり、iPhone と一部の Android を照合するには、少なくとも 2 つの正規表現エンジン呼び出しが必要になりました。Motorola Droid に行きましょう:

MOT-V9mm/00.62 UP.Browser/6.2.3.4.c.1.123 (GUI) MMP/2.0

……わぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ

結論: 誤検知が気になる場合は、ユーザー エージェントのデータベースが必要になります。そうでない場合は、ユーザー エージェントで正規表現を使用して nginx の広範なチェックを行い、キーワード iPad、iPhone、iPod、Android、Windows Phone を検索します。これにより、全モバイル ユーザーの約 80 ~ 85% にフラグが立てられます。全員に一致させたい場合は、メーカーがユーザー エージェントを書き直すため、ユーザー エージェントの DB を使用する必要があります。

于 2013-04-24T19:30:20.480 に答える