.htaccessを使用してタブレット以外のスマホを振り分ける方法メモです。
タブレット端末は基本的にパソコン向けのページを表示させる方が推奨されているので、今回はスマホのみをhtaccessでリダイレクトさせてみようと思います。
これから新規サイトを作るのであればレスポンシブといった対応も視野に入りますが、過去のコンテンツをスマホに対応させるには振り分けることも一つの手段ですね。
スマホのUAの法則を見極める
どこまでをスマホとするかをコチラで判断しなくてもUAを見れば各OSごとにスマホであるかどうかの判別ができるようになっています。
1.まずはアップル製品
iPhone / iPad / iPod といった明確な端末分けが可能になっていますね。
なんと技術者に優しい会社なのでしょう。
2.次にアンドロイド製品
Android / Android + Mobile といったタブレットとモバイルの区別を明確化してくれてあります。
なんと技術者に優しい(ry
3.最後はWindows製品
Windows / Windows + Phone というようにWindous Phoneなのかどうかを区別できるようになっています。
なんと技術者(ry
それでは実際に上記UAの区別でタブレットを除外してみましょう。
.htaccessでスマホのみをリダイレクト
以下の記述ではiPhoneとiPod、AndroidでMobileという文字列が含まれる物、WindowsでPhoneという文字列が含まれる物を「/s/」という階層に転送します。
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^$ /s/ [R,L]
ちなみに指定している[NC]フラグは大文字小文字を区別しないという意味になっています。
さらに、スマホからでも「PC版を見る」リンクを作る可能性を視野に入れてクエリに「mode=pc」を含む場合は振り分けしないといった処理をしています。
最後の[R,L]フラグは「リダイレクト,書き換え最終行」という意味です。
mode=pcの前に付く「!」は「でなければ」の意味なので、URLに「mode=pc」が付いていなければ転送してね。という意味ですね。
まとめ
今回の手段を応用すれば.htaccessでタブレットのみの振り分けなども容易にできると思います。
でもやっぱり、今後の端末ラインナップを予測できない以上レスポンシブこそが当たり前の世の中になるのでしょうが。
じゃあ、この振り分けは意味がないのか?というとそうとも言えません。
レスポンシブと違ってスマホ専用のページを作りこむことができますし、何よりスマホだからこその独自機能の連携などがある以上、スマホを判別することはなくならないと思います。
今日も知識欲は止まらない。