前回「サブドメインで公開しているスマートフォンサイトへユーザーエージェントをみて、リダイレクトしてみる。」でUA判別してリダイレクトさせる方法をご説明いたしました。
.htaccessの記述は下記でした。
RewriteEngine On
RewriteCond %{HTTP_HOST} !^m.webase.jp [NC]
RewriteCond %{QUERY_STRING} !pc.*$
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows\ Phone) [NC]
RewriteCond %{HTTP_USER_AGENT} !iPad [NC]
RewriteRule ^(.*)$ http://m.webase.jp$1 [R=301,L]
ただ、上記だとNexusなどのAndroidを搭載したタブレット端末までスマホサイトへリダイレクトされてしまいます。
NexusやGalaxyのタブレット端末のUA文字列はそれぞれ下記のようになっています。
【Galaxy S III SC-06D Android 4.0.4】
Mozilla/5.0 (Linux; U; Android 4.0.4; ja-jp; SC-06D Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30NEW
【Nexus S Android 4.0.4】
Mozilla/5.0 (Linux; U; Android 4.0.4; ja-jp; Nexus S Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30
(参考:http://s-ej.com/glossary/useragent.html)
下記「Googleのウェブマスター向けブログ」
http://googlewebmastercentral-ja.blogspot.jp/2012/11/giving-tablet-users-full-sized-web.html
に「Mobile」の文字列で判断するといいと記述がありますので「Android」端末の場合はタブレットを考慮して判別するUA文字列に変更してみます。
前述の.htaccessの4行目
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android|BlackBerry|Windows\ Phone) [NC]
の「Android」の条件に「Mobile」を含めます。
正規表現には「AND」条件がないのでちょっと長いですが下記のような書き方で「Android」AND「Mobile」のリダイレクトになります。
.*Android.*Mobile.*
完成した.htaccessが下記です。
(念のため逆パターン「.*Mobile.*Android.*」も追加しています)
RewriteEngine On
RewriteCond %{HTTP_HOST} !^m.webase.jp [NC]
RewriteCond %{QUERY_STRING} !pc.*$
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|.*Mobile.*Android.*|.*Android.*Mobile.*|BlackBerry|Windows\ Phone) [NC]
RewriteCond %{HTTP_USER_AGENT} !iPad [NC]
RewriteRule ^(.*)$ http://m.webase.jp$1 [R=301,L]
※ただし、上記でもAndroidのタブレット端末に標準ブラウザ以外のブラウザをインストールされているケースでは「Mobile」のUA文字列がない場合もあり、その場合は対応できない(スマホサイトにリダイレクトされてしまう)ことになります。
ごく僅かなケースではありますが、何か対処法が見つかれば、また公開していきます。
(※本ページはプロモーションが含まれています。)
- 広告
- 広告