WebサイトでiPhoneのユーザーエージェントを判定してスマートフォンに最適化されたページを表示したいってことありますよね。
簡単にググってみると"iPhone"という文字をフィルターすれば良いと出てきます。
ApacheでやるならBrowserMatchでこんな感じに書く感じでしょうか。
BrowserMatch "iPhone" lite
が、最近これだと駄目なケースに出会いました。
iPadに入れているfacebookアプリから、シェアされたリンクを辿ってWebViewで開くと、以下のようなユーザーエージェントで来ます。
Mozilla/5.0 (iPad; CPU OS 6_0_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10A550 [FBAN/FBIOS;FBAV/5.3;FBBV/89182;FBDV/iPad2,5;FBMD/iPad;FBSN/iPhone OS;FBSV/6.0.2;FBSS/1; FBCR/;FBID/tablet;FBLC/ja_JP]
途中にiPhoneという文字列があるせいで、iPadで見てもスマートフォン向けのページに行ってしまいます。
これを回避するのには、以下のように前後を含めて上げれば良さそうです。
BrowserMatch "\(iPhone;" lite
これだけだと、以下の様なiPod touchのUAがヒットしなくなってしまうので
Mozilla/5.0 (iPod; U; CPU iPhone OS 4_3_1 like Mac OS X; zh-cn) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8G4 Safari/6533.18.5
iPodのケースも追加して
BrowserMatch "\(iPhone;" lite
BrowserMatch "\(iPod;" lite
とするのが良いようです。他にこのケース抜けてるよ!とかあれば教えてください。
コメント