.htaccessでスマホサイト切り替えやろうとしたらモロにつまづいた

PCのホームページのスマホページ作ってよーと
軽いノリでいわれたので軽い気持ちで引き受けたらドはまりしました。

構造としてはこんな感じで、スマホサイトにサブドメイン設定して
ルート直下にhtaccessをおいておくようなイメージ



頭の中で想像はできていたものの、サブドメインがいまいちよく
わかっていなくて、リダイレクトループの森に迷いこみました...


spディレクトリだとうまくいくけど
 
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^(.*)$ /sp/$1 [R=301,L]
</ifmodule>


ドメインだとだめなんだけど...

 
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteRule ^(.*)$ http://sp.hogehoge.com/$1 [R,L]
</ifmodule>


hogehoge.com/sp/test1 とかなら出来たから、
もういっそサブドメインじゃなくてspでよくね...???
ていうかサブドメインにしようって言ったの私なんですけど。もうやだ。
なんでhtaccessでやろうと思ったんだろう...javascriptでやろうかな...


でもやります


ぐぐって2、3日考えあぐねた結果できたーーー!(見た目上は)

 
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteCond %{HTTP_HOST} ^hogehoge¥.com$
RewriteRule ^(.*)$ http://sp.hogehoge.com/$1 [R=301,L]
</ifmodule>


実機で確認したら問題なくできたよおおおおおお!!!

あとはtest3とtest4のディクレクトリを今回の対象外にしたいので
 
<ifmodule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} (iPhone|Android.*Mobile|Windows.*Phone) [NC]
RewriteCond %{QUERY_STRING} !mode=pc
RewriteCond %{REQUEST_URI} !^/(test3|test4)
RewriteCond %{HTTP_HOST} ^hogehoge¥.com$
RewriteRule ^(.*)$ http://sp.hogehoge.com/$1 [R=301,L]
</ifmodule>


これが最終版!


もう、本当に軽いノリでやるもんじゃないなとつくづく思いました...
でもいい勉強になった。次からはたぶん大丈夫...