2014年9月 のアーカイブ


またもやニッチなノウハウ。

PC用URLを代表にして、mod_rewriteでUserAgent毎にページを振り分ける処理をしていました

RewriteCond %{HTTP_USER_AGENT} "KDDI" [NC,OR]

こういった記述でUserAgentで振り分けしていました。よくやる手法です。.htaccessなんかに書きます。

FacebookにPC用URLでシェア投稿しました

お知らせや宣伝でよくやりますね。スマホで見ても、UserAgentの振り分けでスマホ用ページに行ってくれるだろうという見込みです。

それが予期せぬページが表示されていました

うーん、謎ですね…ということで調査しました。

FacebookのスマホアプリだとUserAgent文字列が違いました

auのiPhone5の場合、こんな感じでした。

"Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_2 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D257 [FBAN/FBIOS;FBAV/14.0.0.25.26;FBBV/4017285;FBDV/iPhone5,2;FBMD/iPhone;FBSN/iPhone OS;FBSV/7.1.2;FBSS/2; FBCR/KDDI;FBID/phone;FBLC/ja_JP;FBOP/5]"

お尻の方に、まんまとKDDIが入っていました。
それが原因でガラケーの判定に引っかかり、結果ガラケーページに飛ばされていました。
他キャリアはどうかなと思い、ログをみたところ、DoCoMoは「NTT DOCOMO」が入っていました。ソフトバンクは入ってない様子。

判定の順番は上からなので、先にスマホの判定をいれるように順番を変えて解決しました。やれやれ。

ガラケーの判定はうしろに

今もガラケーの手当しているサイトはそんなに多くないと考えるのですが、逆に言えばそういう所はガラケーの対応の後にスマホの対応をしてきた経緯がある可能性が高いです。
ということは、記述も先にガラケーの判定があり、その後にスマホの記述したケースが多いかも知れません。その場合は今回のようなトラブルにぶつかる可能性があります。
 

今回もレアケースな対応例でした。