#デバイスごとに振分けを行い、指定ディレクトリにリダイレクトさせる
###▼前提条件
(1) SPディレクトリが、PCディレクトリのサブディレクトリになっている。
(例)
PCサイト : http://example.com/
SPサイト : http://example.com/sp/
(2) 同一ページは同一のファイル名になっている。
(例)
PCサイト : http://example.com/page01.html
SPサイト : http://example.com/sp/page01.html
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行目)。
###URLをリライトする場合
PCサイトからSPサイトに転送する際、ブラウザ上のURLを変えず、PCサイトと同一のURLで遷移させる場合は、4行目および8行目末尾の [R] を [L] に書き換える。
###RewriteRule のオプション
[R]
強制的にリダイレクト
[L]
書き換えが行われたら終了 (Last) にする。
現在の書き換え後の URL が後続のルール によってそれ以上書き換えられることを防止する。
[F]
強制的にアクセス禁止
HTTP レスポンスの「403 : Forbidden」を返す。
[NC]
パターンについて、文字の大小を区別しない(No Case)。 つまり、"A-Z" と "a-z" は区別しない。
⇒ htaccessによるPC・スマートフォンの振り分け転送
#各デバイスとも同一URLで表示する場合
###▼ディレクトリ構成
/pc/ : PC用データ
/sp/ : SP用データ
※リソースデータは、それぞれのディレクトリ配下に格納され、別ディレクトリを参照しない前提。
###▼URL
/pc/ /sp/ はURLには含まれない。
それぞれ同階層に同一名のファイルが置かれていることが前提。
リンクのパスも /pc/ /sp/ は含まずに記述する。
##.htaccessの記述
RewriteEngine on
#ループ防止
RewriteCond %{REQUEST_URI} ^/(pc|sp)/
RewriteRule .* - [L]
#スマートフォン
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^(.*)$ sp/$1 [L,NS]
#PC
RewriteRule ^(.*)$ pc/$1 [L,NS]
RewriteBase /
/pc/ /sp/ の各ディレクトリ直下の.htaccessに以下を記述。
RewriteEngine off