こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

.htaccessで携帯とPCの振り分け

 .htaccessで携帯サイトとPCサイトの振り分けで困っています。
.htaccessは以下の通りです。

<IfModule mod_rewrite.c>
RewriteEngine On

# SoftBank
RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [OR]
RewriteCond %{HTTP_USER_AGENT} ^Vodafone [OR]
RewriteCond %{HTTP_USER_AGENT} ^MOT- [OR]
RewriteCond %{HTTP_USER_AGENT} ^SoftBank
RewriteRule ^$ /mobile/[R=302,L]

# DoCoMo
RewriteCond %{HTTP_USER_AGENT} ^DoCoMo
RewriteRule ^$ /mobile/[R=302,L]

# au(HDML-Only)
RewriteCond %{HTTP_USER_AGENT} ^UP.Browser
RewriteRule ^$ /mobile/[R=302,L]

# au(HTML-OK)
RewriteCond %{HTTP_USER_AGENT} ^KDDI
RewriteRule ^$ /mobile/[R=302,L]

</IfModule>

 これで、PCからのアクセスはどのページへも正常なのですが、携帯からのアクセスはhttp://example.comですとちゃんと携帯サイトのindex.htmlへいくのですが、http://example.com/***.htmlで携帯からアクセスするとPCサイトのhttp://example.com/***.htmlへつながってしまいます。この場合、携帯サイトのindex.htmlへ導くためにはどのようにすればよいのでしょうか。
 また、欲を言えば、PCサイトのそれぞれのページにアクセスしてきた携帯をindex.htmlではなく、携帯サイトのそれぞれの該当するページへと導くためにはどのようにしたらよいのでしょうか。
 まったくの初心者ですが、よろしくお願いいたします。

投稿日時 - 2011-11-21 02:16:49

QNo.7145528

すぐに回答ほしいです

質問者が選んだベストアンサー

>RewriteRule ^$ /mobile/[R=302,L]

この行は、「RewriteRule (正規表現) (置換パターン)」という記述方法をします。

「^$」という正規表現は、「行頭(^)の後ろがすぐ行末($)である」すなわち「行内に何も含まれない」
→ドメイン名のみの指定で、パス部分に記述のないパターン (例: http://abc.com/)
ということを表しています。

それで、そのRewriteRuleでは、http://abc.com/http://abc.com/mobile/ に飛ばされるというわけです。

ですから、index.html である場合の行も追加すれば、ひとまずは解決です。
→RewriteRule ^/index.html$ /mobile/index.html [R=302,L]

----

正規表現では、動的なパターンを表現できます。
しかし今回のように同サーバ内で飛ばすのは少々難しいですね…(私の考えた限り)

RewriteRule ^/(.*)$ /mobile/$1 [R=302,L]

とすると、最初の1回は http://abc.com/index.htmlhttp://abc.com/mobile/index.html に飛んでくれそうです。
でも、そこから他のページ(同ディレクトリpage2.html)に飛ぼうとしたとき、
http://abc.com/mobile/page2.htmlhttp://abc.com/mobile/mobile/page2.html

と二重に書き変わってしまってうまくありません。

http://abc.com/なんとか.html を、別ドメインhttp://xyz.com/mobile/なんとか.html に飛ばすのであれば、上記みたいな感じで良さそうですが…。

投稿日時 - 2011-11-21 11:53:58

ANo.2

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

.htaccessは上書きが出来るよね。たしか

投稿日時 - 2011-11-21 12:43:35

ポリンキーですな。

>どのようにしたらよいのでしょうか。
回答=正しく書き換えればうごきます。

以上ポリンキーですな

投稿日時 - 2011-11-21 10:17:30

あなたにオススメの質問