ケータイキャリア毎に振り分けを行うには(mod_rewrite編)
    このエントリをはてなブックマークに登録

2007/10/26 金曜日 matsui Posted in サーバ, 全キャリア対応 2 Comments »

先日執筆した「PHPでキャリア毎に振り分けを行うには(ユーザエージェント編)」に続き、
mod_rewriteを使った、携帯電話・PCの振り分け方法をご紹介しようと思います。

前回の方法ですと、PHPが動くサーバでなくてはなりませんでしたが、
今回の方法ですと、「.htaccess」が置けて、「mod_rewrite」さえ動けばよいので、
より多くのサーバで、より簡単に動作させることができると思われます。

設置方法は簡単で、振り分けを行いたいディレクトリの直下に、
「.htaccess」ファイルを置くだけです。

今回の例でも

「http://example.jp/」 にアクセスがあった場合、

  • ドコモは 「http://example.jp/i/」 にジャンプ
  • auは 「http://example.jp/au/」 にジャンプ
  • SoftBankは 「http://example.jp/sb/」 にジャンプ
  • それ以外は通常通り「http://example.jp/」を表示

と設定する場合のサンプルを記載します。

・example.jpのWeb公開領域直下に、「.htaccess」という名前で、下記の内容のファイルを設置

<IfModule mod_rewrite.c>
RewriteEngine On

# SoftBank
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [OR]
RewriteCond %{HTTP_USER_AGENT} ^MOT- [OR]
RewriteCond %{HTTP_USER_AGENT} ^SoftBank
RewriteRule ^$ /sb/ [R=302,L]

# DoCoMo
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo
RewriteRule ^$ /i/ [R=302,L]

# au(HDML-Only)
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser
RewriteRule ^$ /au/ [R=302,L]

# au(HTML-OK)
RewriteCond %{HTTP_USER_AGENT} ^KDDI
RewriteRule ^$ /au/ [R=302,L]

</IfModule>

 

関連:



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

2007/10/22 月曜日 matsui Posted in PHP, 全キャリア対応 No Comments »

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

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

 

関連: