PEARのライブラリ「Net_User_Agent_Mobile」をインストールしたところで、振り分けのためのphpファイルを作成します。
作業としては、ドコモ・au・Softbank、それぞれ文字コードを一番適正なものに設定してやること、そして、ドコモでCSSを使うためにHTTPヘッダーの「Context-Type」を置き換えてやることです。
ここに関してはこちらのページを参考にさせていただきました。
文字コードはドコモとauをShift-JIS、SoftbankをUTF-8に設定します。
リンク先のページにある通りにinit.phpを作成し、各携帯用テンプレートから呼び出せるようにしておきます。この部分はまた後述します。
また、携帯でPC用ページにたどり着いてしまった時に自動で携帯用ページに誘導する設定ファイルも作りました。
これは参考までにコードを書いておきます。
<?php
// Net_UserAgent_Mobile読み込み
require_once ‘Net/UserAgent/Mobile.php’;
$userAgent = Net_UserAgent_Mobile::singleton();// キャリアごとの設定
if ($userAgent->isDoCoMo()) {
header(‘location:m/index.php’);
} elseif ($userAgent->isEZweb()) {
header(‘location:m/index.php’);
} elseif ($userAgent->isSoftBank()) {
header(‘location:m/index.php’);
}
?>
このphpをカスタムインデックステンプレートとして保存して、PC用のすべてのページから呼び出すようにしました。
というのも、PC用のページは基本すべてウェブサイト、若しくはブログのルート直下にあるのため、携帯はすべて「m/index.php」に飛ばす設定にしておけば迷子にはならないことになります。
ただ、アーカイブのURLをもっと複雑にしてある場合は、いっそのこと、全部サイトトップに飛ばすでも良いかもしれません。それには、locationの後にサイトトップの絶対URLを入れてやればOKです。
なお、 「header(‘location:xxx.php’);」の記述は、その前にhtmlのタグ等があると動作しないので、このphpの読み込みは、テンプレートの一番上に持ってくる必要があります。
とにかく、PCページにたどり着いてパケットを大量に受信した上に表示できない、という現象はこれで避けられると思います。