PCサイトとスマホサイトの振り分けhtaccess

最近めっきりレスポンシブルのサイトが増えましたが
スマホサイトのみ追加で作るときに
端末認識用に稼動させるhtaccessをあれこれ調べてて
なかなかうまくいかなかったのですが、
最終的にうまくいったものをご紹介させていただきます。

目標はスマホでアクセスしたときに、どのhtmlにアクセスしたとしても
そのページに対応したスマホ用のページに飛ばすというものです。

構造はPCサイトディレクトリ内にスマホサイトディレクトリを置き
ファイル名を同じにしておく必要があります。
(例 PCサイト:about.html スマホサイト:sp/about.html)

それをhtaccessで書くとどうなるかというと

RewriteEngine On
RewriteCond %{REQUEST_URI} !(^/sp/)

RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^(.*)$ /sp/$1 [R,L]

となります。

RewriteCond %{REQUEST_URI} !(^/sp/)

ここの部分はhtaccessはディレクトリ以下すべてに作用するために
スマホサイトディレクトリでは作用してほしくないために記述しております。

またPCサイトではphpだけれど、スマホサイトではhtmlだった場合は

RewriteCond %{REQUEST_URI} ^/sp/ [NC]
RewriteRule ^(.*)\.php$ /$1.html [R=301,L]

を追加することで対応が可能です。

2015.12.5