先日アレコレと思案していたこのブログの「携帯・PC別のアクセスの振り分け」、phpスクリプトを書く事で ほぼ思った通りの挙動をしてくれるようになりました。

まだ私のSoftBank携帯(811SH)でしか作動確認していませんが、10数ページ閲覧して変なエラーは出ていないので取り敢えず大丈夫かな?と思っています。
挙動がおかしかったら、お手数ですがコメント頂けるとありがたいです。

以下、私の行った携帯・PCのアクセスを振り分ける方法です。

1.PC用サイトと携帯用サイトを別個に用意

私の場合、PC用サイトはMovableTypeで構築。携帯用サイトはMT4iを使用。
これで両方を楽々と同じコンテンツで管理できます。

2.サーバーでPHPが作動できるようにする

今回取った方法はphpスクリプトで振り分ける方法ですので、サーバーでphpが作動しなければ効果がありません。

私が使用しているさくらのレンタルサーバ(スタンダードプラン)では最初からphpが使えますので、ファイルのパーミッションだけ気を付ければ通常は大丈夫。

cgiとphp < Wiki | さくらのレンタルサーバ非公式FAQ
▲こんなカンジで注意する事項も少なめ

ただし、私が行っているようなhtmlファイルをphpとして利用する場合は、色々と注意が必要。

さくらのレンタルサーバでhtmlをphpとして作動させたい

MobavleTypeをphp化する

▲上記のように、サーバーの奥深くからphpファイルを探し出し、自身が管理できるディレクトリに設置&リネーム、.htaccessの書き換え等々やる事が沢山あります。

サーバーでphpが使えるようになったら、次のステップです

 

3.携帯、PCのUserAgentを基にした振り分けスクリプト作成

先日も紹介した「MovableTypeでPHPを使ってMT4iの携帯用ページにアクセスを振り分ける 」が非常に役に立ちました。ほぼそのまま使わせて頂いています。

私の場合、MTブログに訪問して下さった携帯ユーザーさんを、MT4i側に自動的に飛んで貰うわけです。ですのでMT側のインデックス、カテゴリー、個別各テンプレートに下記スクリプトを仕込みます。(仕込む場所は先頭(DOCTYPE宣言の前))

<?php
$link = "Location: <$MTBlogURL$>index.cgi?mode=individual&amp;eid=<$MTEntryID$>";
$ua = $_SERVER["HTTP_USER_AGENT"];

if(ereg("DoCoMo",$ua)||ereg("J-PHONE",$ua)||ereg("Vodafone",$ua)||ereg("SoftBank",$ua)||ereg("MOT-",$ua)||ereg("KDDI",$ua)||ereg("UP\.Browser",$ua)||ereg("PDXGW",$ua)||ereg("DDIPOCKET",$ua)||ereg("WILLCOM",$ua)||ereg("GoogleWireless Transcoder",$ua)){
header($link);exit;
}

?>

  ▲一例です。これはMTの個別記事テンプレートに挿入するphpスクリプト。

訪問者のUserAgentを参照し、各種携帯キャリアと確認できたら携帯用サイトへ自動で飛んで貰う仕組みになっています。IE、FireFox、Opera等々でのアクセスには無反応で、そのままPCサイトの読み込みが開始されます。

インデックスページ、カテゴリページのテンプレートは、リンク先を適時変更する必要があります。 赤字の部分だけ、テンプレート毎に変えればOKな筈です

紹介先のオリジナルはMTのインクルードモジュールを使用されていますが、管理するテンプレートが増えるのが面倒&サーバーリソース節約になりそうも無いので、私は個別のテンプレートに直書きしました。

また、上記はPHP入門 - 分岐1(if ~ else)PHP 基礎編9 - 正規表現、マッチ、置き換え、ereg、eregi、eregi_replace - SAK Streetsあたりを参考にして、論理和を使い複数行に渡っていたオリジナルソースの複数行を一行にまとめてみました。
私はphpの知識が全くと言っていいほど無いので上手く作動するかかなり心配だったのですが、そんな心配も杞憂に終わり、一発で正常作動してるっぽいです。
(この手の作業、今まで大抵 一度は失敗してるのに(^_^;)

 

4.今後:携帯用サイトも、振り分けを行おうか・・・

これでPC用サイトの携帯ユーザー振り分けは完成。個人サイトならばこの程度の振り分けで十分かと思います。

あとは携帯用サイトにPCでアクセスするのを振り分け&規制するかどうかですが、、、、
過去に「PCで見てる人、携帯サイトも見て確認してー!」とやってるページもある事ですし、そこまでやるのは辞めようと思います。

携帯サイトはcgiで稼動しているので大量に利用者が出るならば規制を考えなければいけませんが、今の所cgiの負荷はそんなに高くないようなので、このままにしようと思います。

 

5.最後におねがい

引越し前のブログには1日200人前後の携帯ユーザーの訪問があり、現在でも150名以上の方が毎日旧ブログを経由してココにいらしゃっています。

しかし旧ブログの個別ページにはPC用サイトの移転先URLしか掲載していません(今後も両方掲載の予定なし)ので、毎日100人前後の携帯ユーザーがPCサイト側に迷い込んでいる状態。
意図的にPCサイト側に飛んでいたらゴメンナサイですが、「通常の携帯ブラウザ」でPCサイト側にやって来た場合、UserAgentを参照してPCサイト、携帯サイトの振り分けを行う事にしました。

スマートフォンなど、ブラウザにIEやOperaが使われている場合はPCサイト側に振り分けられますので、少なくとも「意図せずPCサイトに飛んでしまった人たち」を救えるんじゃないかと。
逆にPCブラウザの無い携帯は問答無用にはじき出しちゃう仕様ですが、、、この方が都合が良いよね?>携帯ユーザーさん

不都合が出た方(携帯だけどPCサイト側で見たいんだよ!てのも含め)要望ありましたらコメントお願いします。

今回は以上。