携帯電話の機種判別というのは結構面倒です。
全てをphpやPerl等で処理する方法もありますが…。
ちょっと前のSoftware Design誌にapacheのモジュールmod_rewriteの記事があって、その中で携帯電話の機種振り分けを行っていました。
最近、とっても困ったことにヒマなので、時間潰しに試してみました。
キャリア判別は、User Agentとhttpのヘッダー情報を使います。
User Agentが、DoCoMoで始まればドコモです。
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo/
ヘッダー情報HTTP_X_JPHONE_MSNAMEが、英数字で始まっていればSoftbankです。
RewriteCond %{HTTP:x-jphone-msname} ^[A-Z0-9][A-Z0-9]
ヘッダー情報HTTP_X_UP_DEVCAP_MAX_PDUが、数字で始まっていればauです。
RewriteCond %{HTTP:x-up-devcap-max-pdu} ^[0-9][0-9]
これらの条件にマッチすれば、携帯用のディレクトリにリダイレクトします。
それ以外は、PCにしてしまっても良いでしょう。ウィルコムをどうするか?というのはありますが…
余談ながら、User AgentにUP.Browserがあったらau端末と振り分ける場合があるようですが、Softbankの一部の端末のUser AgentにもUP.Browserが含まれていますので要注意です。
ここからさきは、どこまで細分化するかです。
例えば、ドコモだと、初期のFOMAを除けば、xhtmlに対応しています。xhtmlに対応していることよりも、tableタグが使えることのほうが大きいですかね。
また、表示画面サイズもimode初期の機種と、最近の機種では全然違います。写真を掲載する場合は、画像サイズは端末の画面サイズにあわせたいところです。
ソフトバンクも、最近の3G端末は、xhtmlが使えます。画像サイズについては、ドコモと同じです。
auの場合は、端末の世代によって、HDMLとxhtmlがあります。xhtml対応端末では、画像サイズの問題があります。
auのHDML端末、ドコモの505以前のムーバ端末、ソフトバンクの以前のJ-PhoneブランドやVodafone初期の端末は、切り捨ててしまっても良いようにも思いますが。。
画面サイズについては、ドコモは、機種名から判別するしかありません。
ソフトバンクはHTTP_X_JPHONE_DISPLAYから、auはHTTP_X_UP_DEVCAP_SCREENPIXELSから取得できますので、こちらはわりと単純です。
このようなことを試行錯誤していたら、URL書き換えのルール部分だけで100行近くになってしまいました。
さて、古い端末を持ってないんですが、どうやってテストしようか(笑)
ちなみに、この100行近い書き換えルールには、Flash対応端末の判別が含まれていません。
Flashについては、機種判別のための情報を持っていません。
au端末だと、おそらくは、HTTP_X_UP_DEVCAP_MULTIMEDIAのどこかを見れば判別可能だと思います。が、どれを見ればいいかわかりません。
ドコモについては、機種名で判別するしかないようです。Softbankについては、対応機種すらわかりません。オフィシャルCPだったら、情報が開示されているんでしょうけど。
ところで、mod_rewriteについて書かれているサイトの中には、RewriteRuleに¥dや¥wといった特殊文字を使っている例がありあすが、これは正しいんでしょうか?どうも正常に動いてくれません。apache 2.xだと使えるのかな?
http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
には、使えるとも、使えないとも書かれてないません。明記されていないから使えないのか、明記されてなけど使えて当然なのかは、僕にはわかりませんが。
追記
その後ネット上の情報を調べていたら、HTTP_ACCEPTの中に“application/x-shockwave-flash”があるかどうかで、flash対応を判別する方法が書かれていました。
ただし、この方法では、どのバージョンのFlash Liteに対応しているかまではわからないですかね。
-
最近の投稿
最近のコメント
- 当社Webサイトについて に t.akiyama より
アーカイブ
- 2024年3月
- 2023年7月
- 2023年6月
- 2023年5月
- 2023年3月
- 2022年12月
- 2022年10月
- 2021年12月
- 2021年9月
- 2021年2月
- 2021年1月
- 2020年10月
- 2020年1月
- 2019年4月
- 2019年3月
- 2019年2月
- 2018年12月
- 2018年10月
- 2018年9月
- 2018年8月
- 2018年6月
- 2018年5月
- 2018年3月
- 2018年2月
- 2018年1月
- 2017年11月
- 2017年10月
- 2017年9月
- 2017年8月
- 2017年7月
- 2017年6月
- 2017年5月
- 2017年4月
- 2017年3月
- 2017年1月
- 2016年11月
- 2016年10月
- 2016年8月
- 2016年7月
- 2016年6月
- 2016年5月
- 2016年4月
- 2016年3月
- 2016年2月
- 2015年12月
- 2015年10月
- 2015年8月
- 2015年7月
- 2015年6月
- 2015年5月
- 2015年4月
- 2015年2月
- 2015年1月
- 2014年12月
- 2014年11月
- 2014年10月
- 2014年7月
- 2014年6月
- 2014年5月
- 2014年4月
- 2014年3月
- 2014年1月
- 2013年12月
- 2013年11月
- 2013年10月
- 2013年9月
- 2013年8月
- 2013年7月
- 2013年6月
- 2013年5月
- 2013年4月
- 2013年3月
- 2013年2月
- 2013年1月
- 2012年12月
- 2012年11月
- 2012年10月
- 2012年9月
- 2012年8月
- 2012年7月
- 2012年6月
- 2012年5月
- 2012年4月
- 2012年3月
- 2012年1月
- 2011年12月
- 2011年10月
- 2011年9月
- 2011年8月
- 2011年7月
- 2011年6月
- 2011年5月
- 2011年4月
- 2011年3月
- 2011年2月
- 2011年1月
- 2010年12月
- 2010年11月
- 2010年10月
- 2010年9月
- 2010年8月
- 2010年7月
- 2010年6月
- 2010年5月
- 2010年4月
- 2010年3月
- 2010年2月
- 2010年1月
- 2009年12月
- 2009年11月
- 2009年10月
- 2009年9月
- 2009年8月
- 2009年7月
- 2009年6月
- 2009年5月
- 2009年4月
- 2009年3月
- 2009年2月
- 2009年1月
- 2008年12月
- 2008年11月
- 2008年10月
- 2008年9月
- 2008年8月
- 2008年7月
- 2008年6月
- 2008年5月
- 2008年4月
- 2008年3月
- 2008年2月
- 2008年1月
- 2007年12月
- 2007年11月
- 2007年10月
- 2007年9月
- 2007年8月
- 2007年7月
- 2007年6月
- 2007年5月
- 2007年4月
- 2007年3月
- 2007年2月
- 2007年1月
- 2006年12月
- 2006年11月
- 2006年10月
- 2006年9月
- 2006年8月
カテゴリー
メタ情報