PHPでキャリア毎に振り分けを行うには(ユーザエージェント編)
Tweet
記念すべきリニューアル後一つめの記事は、原点に帰って、
「ユーザエージェントによるキャリアの振り分け」
について書こうと思います。
「http://example.jp/」 にアクセスがあった場合、
- ドコモは 「http://example.jp/i/」 にジャンプ
- auは 「http://example.jp/au/」 にジャンプ
- SoftBankは 「http://example.jp/sb/」 にジャンプ
- それ以外は通常通り「http://example.jp/」を表示
というようなケースはとてもよくあります。
PC版とモバイル版に分けるためというのはもちろんですが、各キャリア用のHTMLや画像を、それぞれのフォルダに用意すればよいので、各キャリアに最適化したサイトの制作が容易になるからです。
下記はそんな振り分けプログラムのサンプルです。
// ユーザエージェントの取得 $agent = $_SERVER['HTTP_USER_AGENT']; if (preg_match('/^J-PHONE/', $agent) or preg_match('/^Vodafone/', $agent) or preg_match('/^SoftBank/', $agent) or preg_match('/^MOT-/', $agent)) { // J-PHONE, Vodafone, SoftBankの場合 $dir = 'sb/'; } elseif (preg_match('/^DoCoMo/', $agent)) { // DoCoMoの場合 $dir = 'i/'; } elseif (preg_match('/UP.Browser/', $agent)) { // auの場合 if(preg_match('/^KDDI/', $agent)) { // au(HTML-OK) $dir = 'au/'; } else { // au(HDML-Only) $dir = 'au/'; } } else { // その他PC等 $dir = ''; } $url = 'http://example.jp/' . $dir; header('Location: ' . $url); // 指定ページに移動 exit;
ポイントはauよりも先にソフトバンクを判定することです。
auだけではなく、ソフトバンク端末の中にも「UP.Browser」が搭載されている端末があります。
またソフトバンクの端末の中には「MOT-」から始まる特殊な端末があることにも注意してください。
もっともこの端末のシェアはかなり低いと思われますので、アクセスがあることは少ないでしょう。
今回はPHPのコードをサンプルとして記載しますが、他の言語でも基本は同じです。
関連:
最近の記事