PHPでキャリア毎に振り分けを行うには(ユーザエージェント編)
    このエントリをはてなブックマークに登録

記念すべきリニューアル後一つめの記事は、原点に帰って、
「ユーザエージェントによるキャリアの振り分け」
について書こうと思います。

「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のコードをサンプルとして記載しますが、他の言語でも基本は同じです。

 

関連:


 

最近の記事







コメントを書く