ある案件で全ページ切り替えたいというのがあったので…
スマホ→PC
でも
スマホ←PC
でもいけるようにするイメージです。
そのHPは元々トップページのみjsで切り替えてたんですが、それだとスマホのURL(/sp/など)
でPCでアクセスするとそのままスマホ版のページの表示になってしまうし、
下層(/privacy/とか)ページでの切り替えがまったくできないのでよろしくないって事でやってみました。
例
PC : http://sample.com/
SP : http://sample.com/sp/
だったとします。
RewriteEngine on
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^(.*)$ sp/$1 [R]
RewriteBase /
RewriteEngine on
はURLの切り替えを可能にしますよ~
て意味です。
RewriteCond %{REQUEST_URI} !/sp/
は!/sp/なので/sp/が含まれていなかったら
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
該当するデバイスだった場合、
RewriteRule ^(.*)$ sp/$1 [R]
RewriteRuleこれはどういうものに切り替えるかなので
ファイル名の前にsp/を足したURLにする。
RewriteBase /
終了。って感じです。
これでPC→SPはオッケーです。
次にSP→PCです。
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^sp/(.*)$ $1 [R]
RewriteBase /
RewriteCond %{REQUEST_URI} /sp/
は/sp/なので/sp/が含まれていて
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
該当するデバイス以外だった場合
RewriteRule ^(.*)$ sp/$1 [R]
RewriteRuleこれはどういうものに切り替えるかなので
ファイル名の前にsp/を足したURLにする。
RewriteBase /
終了。って感じです。
これで普通だったらいけるんですが、
その時の案件が
PC : http://sample.com/test/
SP : http://sample.com/sp/test.php
みたいな感じで、下層ページのスマホだけphpファイルだったので、
1ページづつ書くしぐらいしか思いつきませんでした…
なので、
RewriteEngine on
#topページ転送
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^$ /sp/ [R]
RewriteBase /
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^sp/$ / [R]
RewriteBase /
#testページ転送
RewriteCond %{REQUEST_URI} !/sp/
RewriteCond %{HTTP_USER_AGENT} (iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^test/$ /sp/test.php [R]
RewriteBase /
RewriteCond %{REQUEST_URI} /sp/
RewriteCond %{HTTP_USER_AGENT} !(iPod|iPhone|iPad|Android|Windows\ Phone)
RewriteRule ^sp/test.php$ /test/ [R]
RewriteBase /
これで
例
PC : http://sample.com/
SP : http://sample.com/sp/
PC : http://sample.com/test/
SP : http://sample.com/sp/test.php
がいけるようになります。