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] に書き換えます。

この記事が気に入ったらサポートをしてみませんか?