2006-04-24 ジューシィ2―その6―
運用中に気づいたことがあったので,またまた手直ししました。
携帯サイトの対象ユーザエージェントを追加
つぎのユーザエージェント(User Agent)を携帯サイトにリダイレクトすることにしました。以下UA名とUAの概要。
- jig browser ― jig.jp社の携帯電話用WWWブラウザ
- NetFront ― ACCESS社の携帯電話・家電用WWWブラウザ
- PlayStation Portable ― いわゆるPSP,ソニーの携帯ゲーム機
.htaccessを修正
ジューシィ2では機種判定を二段階に分けています。まずApacheのMOD_REWRITEを使って,携帯電話やPDAでアクセスしたときは携帯サイトに無理やり誘導します。つぎに「DoCoMo」「AU」「Vodafone」「ほか」のよっつに分けてページ容量と文字コードを変えてページを出力します。
今回の変更は機種判定の第一段階目のみです。.htaccessファイルを修正しました。以下コードです。
RewriteEngine on RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} KDDI- [NC,OR] RewriteCond %{HTTP_USER_AGENT} UP\.Browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} MIDP- [NC,OR] RewriteCond %{HTTP_USER_AGENT} DDIPOCKET [NC,OR] RewriteCond %{HTTP_USER_AGENT} WILLCOM [NC,OR] RewriteCond %{HTTP_USER_AGENT} KYOCERA [NC,OR] RewriteCond %{HTTP_USER_AGENT} Mozilla/3 [NC,OR] RewriteCond %{HTTP_USER_AGENT} "jig browser" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "PlayStation Portable" [NC,OR] RewriteCond %{HTTP_USER_AGENT} NetFront [NC] RewriteRule !mobile http://www.example.com/mobile/ [R,L]
余談ですが「REWRITE(書換え),CONDITION(制約),RULE(規則)」というのは,グラフ理論の業界で見かける学術用語だった気がします。
気になることをまとめて
- <動作概要>モバイル機器でアクセスしたとき /mobile にリダイレクトする
- フラグNC(no case)は大文字小文字を問わないという意味
- 条件パターン(UA名)は部分一致にしているので予期せぬ動作をする可能性があるが,いまのところ実害はないので細かく記述していない
- すでにmobileにリダイレクトした場合は,処理を終了する(無限ループの防止)。パス名にmobileがどの位置に現れるかまでは判別していないので /.../mobile のような場合に変な動作をしそうだがそれは仕様