.htaccessでスマホをタブレット以外で振り分ける


.htaccessを使用してタブレット以外のスマホを振り分ける方法メモです。
タブレット端末は基本的にパソコン向けのページを表示させる方が推奨されているので、今回はスマホのみをhtaccessでリダイレクトさせてみようと思います。
これから新規サイトを作るのであればレスポンシブといった対応も視野に入りますが、過去のコンテンツをスマホに対応させるには振り分けることも一つの手段ですね。

SPONSORED LINK

スマホの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でタブレットのみの振り分けなども容易にできると思います。
でもやっぱり、今後の端末ラインナップを予測できない以上レスポンシブこそが当たり前の世の中になるのでしょうが。
じゃあ、この振り分けは意味がないのか?というとそうとも言えません。
レスポンシブと違ってスマホ専用のページを作りこむことができますし、何よりスマホだからこその独自機能の連携などがある以上、スマホを判別することはなくならないと思います。

今日も知識欲は止まらない。

関連トピック

Sakura

さくらサーバーのMySQLをcronで自動バックアップする方法

さくらレンタルサーバーでmysqlのデータを自動でバックアップする為のcron設定方法メモです。 サーバー上ファイルのバックアップは常

Open

.htaccessでMultiViewsから.phpの拡張子省略をする方法

拡張子を省略したり、拡張子なしでファイルにアクセスする方法メモです。 URLから拡張子を省けるので場合によってはSEO的に有利になるこ

Allow

.htaccessで特定ファイルのみ許可・拒否する方法

.htaccessファイルを利用して「特定のファイルだけ許可」もしくは「特定のファイルだけ拒否」する方法メモ。 例えば設定項目のファイ

Time

海外サーバでの時差(タイムゾーン)を変更する方法

海外サーバのサーバ時間を変更する方法です。 タイムゾーンを設定をすることで日本時間に合わせることが可能なので、時間を表示するサイト

dreamhost_sky

DreamHost Promo Code(プロモコード)最大割引クーポン&使い方まとめ

世界で一番安くなるプロモコードを作ってほしいとご依頼して頂きましたので、新規で割引最大のプロモコードをご用意しておきます。色々なサー

Stop

.htaccessでRewriteRuleを表示URLそのまま変えずに転送する

htaccessで動的URLなどを別のURLに書き換える場合に、アクセスしたURLをそのままにして表示だけを切り替える方法メモです。

公開日:2012/06/19