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 のような場合に変な動作をしそうだがそれは仕様

関連リンク