スポンサードリンク

【mod_rewrite】スマートフォンからのアクセスを振り分ける

mod_rewriteを利用して、スマートフォンからのアクセスを振り分ける方法を説明します。

スポンサードリンク

スマートフォンからのアクセスを振り分ける

環境

前提として、環境を整理しておきます。

  • ルートディレクトリ
    /var/www/html/○○○/
  • スマートフォン用のディレクトリを設置し、そこに各種ファイルを作成
    /var/www/html/○○○/smartphone/***

 

スマートフォンの振り分け

.htaccessに以下を記述すると、PC用ページにスマートフォンでアクセスしてきたユーザーを、スマートフォン用のディレクトリ「smartphone」にリダイレクトさせることができます。

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/smartphone/.*$
RewriteCond %{HTTP_USER_AGENT} (iPhone|iPod|Android.*Mobile|BlackBerry|Windows.Phone) [NC]
RewriteCond %{HTTP_USER_AGENT} !iPad [NC]
RewriteRule ^(.*)$ /smartphone/$1 [R=301,L]

解説

基本事項としてmod_rewriteRewriteRuleRewriteCondを読んでください。

スマートフォンのユーザーが、「http://○○○.com/hoge.html」というURLでアクセスしてきたとします。

すると、最初のRewriteCondの「%{REQUEST_URI}」には「/hoge.html」が渡ります。これは条件パターンである「^/smartphone/.*$ではない」と合致するので、次のRewriteCondに処理が移ります(「!」は否定を意味する)。

2つ目のRewriteCondの「%{REQUEST_URI}」にはスマートフォンのユーザーエージェントが渡ります。これと条件パターンに記述されているものがマッチングされ、この場合マッチするので次のRewriteCondに処理が移ります。

3つ目のRewriteCondにもスマートフォンのユーザーエージェントが渡り、条件パターンである「iPadではない」とマッチングされます。この場合、マッチングされるので、RewriteRuleが実行され、スマートフォン用のページがあるディレクトリにリダイレクトされます(iPadの場合、ユーザーエージェントにiPhoneが含まれる場合があるらしいのでこの処理を入れておく)。

つまり、あるスマートフォンユーザーが「http://○○○.com/hoge.html」というURLでアクセスしてきた場合、「http://○○○.com/smartphone/hoge.html」に振り分けることができます。

「NC」や「L」、「R=301」はフラグです。また「^」「.*」「$」「|」などは正規表現です。

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント