【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_rewrite、RewriteRule、RewriteCondを読んでください。
スマートフォンのユーザーが、「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」に振り分けることができます。
Warning: count(): Parameter must be an array or an object that implements Countable in /home/yskymk/www/000web/ysklog/mod-rewrite/wp-includes/class-wp-comment-query.php on line 405
コメント
まだコメントはありません。