htaccessによるPC・スマートフォンの振り分け転送
2015.8.24
(http://html-five.jp/195/)
htaccessでスマートフォンからのアクセスのみを振り分けて、スマートフォンサイトに転送する方法。
前提条件
スマートフォンサイトが、PCサイトのサブディレクトリになっている場合を前提としています。
(例)
PCサイト: http://example.com/
スマートフォンサイト: http://example.com/sp/
※PCサイトとスマートフォンサイトが兄弟ディレクトリの場合はこちら。
※PCサイトとスマートフォンサイトが別ドメイン(サブドメイン含む)の場合はこちら。
要件
双方向転送
スマートフォンからPCサイトにアクセスした時は、スマートフォンサイトに転送。
PCからスマートフォンサイトにアクセスした時は、PCサイトに転送
※単方向(PCサイト→スマートフォンサイトの転送のみ)も可能
ページ単位で転送
http://example.com/page01.html → http://example.com/sp/page01.html
http://example.com/page02.html → http://example.com/sp/page02.html
のように、同一のファイル名のページに転送する。
※全てトップページへの転送も可能。
URLのリライトなし
ブラウザのステータスバーには、実際の転送先のURLが表示される
※リライト(表示上のURLを変えずに転送)も可能
htaccessの書き方
基本パターン(双方向・ページ単位・リライトなし)
ルート直下のhtaccessに以下のように記述します。
RewriteEngine on
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^(.*)$ sp/$1 [R]
RewriteBase /
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^sp/(.*)$ $1 [R]
RewriteBase /
リクエストしたURLに /sp/ が含まれず(2行目)、
かつ、ユーザーエージェントにiPhone、Android等が含まれる場合(3行目)、
ファイル名の前に sp/ を足したURLに書き換える(4行目)。
リクエストしたURLに /sp/ が含まれ(6行目)、
かつ、ユーザーエージェントにiPhone、Android等が含まれない場合(7行目)、
URLから sp/ を取り除く(8行目)。
単方向の場合
スマートフォンサイト→PCサイトの転送を行わない場合は、
5行目~9行目までを削除してください。
全てTOPページに転送する場合
PCサイトとスマートフォンサイトのファイル名が対応していない場合など、
一律トップページへ転送する場合は、4行目および8行目を以下のように書き換えます。
(4行目)
RewriteRule ^(.*)$ sp/ [R]
(8行目)
RewriteRule ^sp/(.*)$ / [R]
URLをリライトする場合
PCサイトからスマートフォンサイトに転送する際、
ブラウザ上のURLを変えず、PCサイトと同一のURLで遷移させる場合は、
4行目および8行目末尾の [R] を [L] に書き換えます。
この記事が気に入ったらサポートをしてみませんか?