- ベストアンサー
.htaccessでPCと携帯サイトを振り分ける方法
- PCサイトと携帯サイトを振り分けるためには.htaccessを使用することができます。
- PCサイトへのアクセスはwww.aaa.com/で、携帯サイトへのアクセスはwww.aaa.com/i/で行います。
- 現在の.htaccessの記述では、DoCoMo、J-PHONE、Vodafone、SoftBank、MOT-、KDDI、UP.Browserのユーザーエージェントにマッチするリクエストがあった場合、/i/index.htmlにリダイレクトされます。auのSH008でのテストも行っています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
RewriteEngine On RewriteCond %{REQUEST_URI} !/i/ RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} ^Vodafone [OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank [OR] RewriteCond %{HTTP_USER_AGENT} ^MOT- [OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} UP\.Browser RewriteRule ^.*$ /i/index.html [R=302]
その他の回答 (1)
- Lchan0211
- ベストアンサー率64% (239/371)
/index.htmlだけでなく、携帯からの全てのアクセスを /i/フォルダ内の同ファイル名に振り分けたいのであれば、 最後の部分は Rewrite ^(.*)$ /i$1 [R] とすればよさそうに思います。 正規表現式を勉強してください。
お礼
早速のご回答ありがとうございます。 試してみたのですが、 PCでアクセスしたところ 以下のエラーが表示されてしまいました。 Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. また、最終的には以下の形にしたいのですが、 (別ページの制御) Redirect permanent /test/index_1.html http://www.aaa.com/test/index.html (携帯振り分け制御) RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [OR] RewriteCond %{HTTP_USER_AGENT} ^Vodafone [OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank [OR] RewriteCond %{HTTP_USER_AGENT} ^MOT- [OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [OR] RewriteCond %{HTTP_USER_AGENT} UP\.Browser RewriteRule Rewrite ^(.*)$ /i$1 [R] (以下、www.aaa.com/index.htmlに飛ばす為の制御(だったと思います)) RewriteEngine On RewriteCond %{HTTP_HOST} ^aaa\.com RewriteRule ^(.*)$ http://www.aaa.com/$1 [R=301,L] RewriteEngine On RewriteRule ^(.*)/$ /$1/index.html [R=301,L] RewriteEngine On RewriteRule ^$ /index.html [R=301,L] のように、複数命令がある場合、 携帯振り分けの命令はどこに入れるのが妥当なのでしょうか? 質問が増えて申し訳ございません。 いろいろと試している最中ですが、 なかなか解決できないので、 お心当たりがございましたら、よろしくお願いいたします。 正規表現も、急ぎ勉強したいと思います。
お礼
教えていただいた記述でテスト成功しました。 おかげさまで、やりたい事がクリア出来ました。 大変助かりました。ありがとうございます。 どうも2行目がミソのようですね。 もっと勉強して、きちんと理解したいと思います。