• 締切済み

htaccess 同一URL携帯転送とwww有無統一の両立

RewriteEngine onを使った、 htaccessの書き方について質問させてください。 1.SEOのため、URLは「www」ありに統一させたい。 2.www.○○○.jpとURL直接入力した際、PCにはPC向けのページを、   携帯には携帯向けのページを表示させたい。 この二つの条件を両立するため、下記のとおりhtaccessを書いてみたのですが、携帯からアクセスしても、PCのTOPが無理やり表示されてしまうという結果に終わりました。 どうすればよいのか、ご存知の方お教えください。 --------------------------------------------------------------- RewriteEngine on RewriteCond %{HTTP_HOST} ^ドメイン\.jp RewriteRule (.*) http://www.ドメイン.jp/$1 [R=301,L] RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Up.Browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^ASTEL [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^DDIPOCKET [NC] RewriteCond %{HTTP_USER_AGENT} ^WILLCOM [NC] RewriteRule ^$ 携帯用URL [R]

  • 023
  • お礼率53% (7/13)
  • HTML
  • 回答数2
  • ありがとう数1

みんなの回答

回答No.2

#1は的外れのようですね 結論から書きますと 携帯用の記述とPC用の記述を上下逆にして (以下ドメインを example.jp 携帯用のpathを /mobile/ と仮定します) RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR] ##他の携帯は中略  RewriteCond %{HTTP_USER_AGENT} ^WILLCOM [NC] RewriteRule ^$ http://www.example.jp/mobile/ [R,L] ## 上が携帯用 下がPC用 RewriteCond %{HTTP_HOST} !^www\.example\.jp RewriteRule (.*) http://www.example.jp/$1 [R=301] として試してください。 ##こちらで行った実験 うちのTESTサーバーではホスト名に http://fedora.lanpc/http://www.fedora.lanpc/ などが使える様になっていますが ドキュメントルートの .htaccessに RewriteEngine on RewriteCond %{HTTP_HOST} !^www\.fedora\.lanpc RewriteRule (.*) http://www.fedora.lanpc/$1 [R=301,L] RewriteCond %{HTTP_USER_AGENT} "MSIE 7.0" [NC] RewriteRule ^$ /php/01/ [R] ## としてみたところ MSIE7で http://fedora.lanpc/ にアクセスすると http://www.fedora.lanpc/php/01/ にリダイレクトされ MSIE7以外のFIREFOXなどでtoppageにアクセスすると http://www.fedora.lanpc/ にリダイレクトされます。  これで意図どおりですよね? で、PCの場合はOKですが携帯の場合 考えられることは もしかすると2回のリダイレクトはしないのかもしれません どういうことかと言うと 質問者さんの掲示されたrewriteの場合 携帯で http://example.jp/ にアクセスするとまず上の段のrewriteが実行され サーバーから HTTP/1.1 301 Moved Permanently Date: Sat, 05 Jul 2008 12:46:00 GMT Server: Apache/2.2.8 (Fedora) Location: http://www.example.jp/ Content-Length: 303 Connection: close Content-Type: text/html; charset=iso-8859-1 と言うヘッダが返され 携帯のブラウザは Location: http://www.example.jp/ に従ってリダイレクトします リダイレクトすると、また .htaccessが読み込まれ 今度は 携帯用の rewriteにマッチするので サーバーから (Locationヘッダ以外は省略) Location: http://www.example.jp/mobile/ とヘッダが返されます。 PCのブラウザは再びこのリダイレクトに従いますが 携帯の場合 2度目のリダイレクトはしないのかもしれません いずれにしろ1回で済むことを2回やっていることに成りますので 上に書いたように順番を変えて記述されて試されてはどうでしょうか? それでも駄目だった場合ですが、、、 HTTP_USER_AGENT でマッチしていないか?  (といっても http://www.openspc2.org/userAgent/ の下の方にある携帯の欄を見ても問題ないように見えますが) Rewriteは抜きにして User-Agentを確認するなら PHPでしたら <html><pre><H2>$_SERVER TEST</H2> <? print_r($_SERVER);?> CGI(perl)なら #!/usr/bin/perl print "Content-type: text/html\n\n"; print "<HTML><pre>\n<h2>ENV test</h2>"; foreach(sort(keys %ENV)){print "$_ = $ENV{$_}\n";} こんなのを置いてアクセスすると判ります

回答No.1

RewriteRule ^$ 携帯用URL [R]   ↓ RewriteRule ^.*$ 携帯用URL [R] ではどうですか? どうも^$ でマッチしていないような気がするのですが あと 携帯用URL <=の部分に http://www.ドメイン.jp/ は入っていますか?   ↓        入っていなければそちらにも一応入れたほうが良いかと思います RewriteRule ^.*$ http://www.ドメイン.jp/携帯用のページpath [R]

023
質問者

お礼

早速のご回答、ありがとうございます。 しかしながら…うまくいきませんでした(汗)

関連するQ&A

  • .htaccessで携帯サイトとPCサイトの振り分けについて

    .htaccessで携帯サイトとPCサイトの振り分けについて お世話になります。 .htaccessで携帯サイトとPCサイトの振り分けで困っています。 現在、index.phpで携帯サイトとPCサイトの振り分けしています。この場合、PCサイトのトップページがindex.htmlではなく他の名前にしなくてはならないようで、現在はpc.htmlにしています。 どうにかpc.htmlではなく、index.htmlのまま携帯サイトとPCサイトの振り分けをしたいのです。 .htaccessであればできそうなので、いろいろと調べながら試したのですがうまくいきませんでした。 使用しているサーバーはさくらのレンタルサーバーで、ライトプランです。 mod_rewriteは入ってると記載してありました。.htaccessもOKなようです。 以下のように.htaccessファイルに記述して試しました。 例1) RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^SoftBank [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^KDDI [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^Up.Browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^ASTEL [NC,OR] RewriteCond %{HTTP_USER_AGENT} ^DDIPOCKET [NC] RewriteRule ^$ abc.com/m/ [R] 例2) Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ http://www.abc.com/m/index.html [R] RewriteCond %{HTTP_USER_AGENT} J-PHONE RewriteRule ^$ http://www.abc.com/m/index.html [R] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ http://www.abc.com/m/index.html [R] 素人ですので、できましたら記述全文教えていただけるとありがたいです。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • .htaccess で携帯が識別されない

    .htaccess でアクセスしたときにPC用のページではなく携帯用 ブログに転送するようにしたいのですが、うまくいきません。 RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC] RewriteRule ^$ http://ochatea.blog63.fc2.com/?m [R] #byDoCoMo RewriteCond %{HTTP_USER_AGENT} J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} SoftBank [NC] RewriteRule ^$ http://ochatea.blog63.fc2.com/?m [R] #by SoftBank RewriteCond %{HTTP_USER_AGENT} UP.Browser [NC] RewriteRule ^$ http://ochatea.blog63.fc2.com/?m [R] #by au のように書いたのですが 携帯からアクセスしてもPC版のホームページが表示されてしまいます。 また、 Redirect permanent /tea/ http://ochatea.blog63.fc2.com/?m と書いたらページを飛ばすことができたので.htaccess自体は 効いていると思います。 ただ上記だとパソコンからアクセスしてもブログに飛んでしまうので 携帯からアクセスした場合のみブログに飛ばすようにしたいのです。 .htaccessの書き方が問題なのでしょうか。 もしくは携帯のせいなのでしょうか。 ちなみに携帯電話はドコモのn705iです。 回答お願いします。

  • .htaccessを使った、携帯の振り分け

    サイトの.htaccessを使った、携帯とPC用ページの振り分けについてです。 サイト(http://~.com/)にアクセスした時に RewriteEngine on RewriteCond %{HTTP_USER_AGENT} "DoCoMo" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "J-PHONE" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "KDDI" [NC,OR] RewriteCond %{HTTP_USER_AGENT} "UP.Browser" [NC] RewriteRule ^$ m/ [L] と、上のように.htaccessで携帯でアクセスしたときは(http://~.com/m/)飛ばすようにしました。 トップページはうまく表示できたのですが、そこから(http://~.com/m/)以下のディレクトリに行けません。 (パスは絶対パスではなく相対パスです) どうやら(http://~.com/m/)自体に飛んでるのではなく、(http://~.com/)で(http://~.com/m/)の内容を表示しているようです。 (http://~.com/m/)自体に飛ばすにはどうすればいいのでしょうか? よろしくお願いします。

  • .htaccess による携帯からのアクセスの振り分け方について教えてください。

    お世話になります。 急遽すぐに解決しなくてはならなくて、困っています。 よろしくお願いいたします。 .htaccess による携帯からのアクセスの振り分け方について教えてください。 .htaccessに下記の通り記述しました。 ---------------------------------------------------------------- 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} UP.Browser RewriteRule ^$ /mobile/index.html [R] ---------------------------------------------------------------- こちらは問題なく動作するのですが、これですとPCで見た場合自動的にディレクトリ内の直下のindex.html に移動してしまいます。 PCで見た場合も別のファイルに移動させたいのですが、その場合どのように記述したらよいでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • .htaccessによる携帯のアクセス振分けについて

    .htaccessによる携帯のアクセス振分けについて .htaccess で携帯とパソコンの振分けを行ったのですが http://*******.com/ を携帯からアクセスした場合はちゃんと携帯サイトへ振り分けられますが http://*******.com/index.html と ドメインの後ろにファイル名が入ったURLに アクセスすると振分けが行われずパソコンのサイトを表示してしまいます 参考サイトには 「「.htaccess」ファイルは設置したディレクトリ以下全てに影響します。」 と書いてあります 参考サイト: http://www.w3lab.jp/htac/keitai.html どのファイルやディレクトリにアクセスをしても 携帯サイトに振り分けられるようにしたいのですが どのようにしたらいいでしょうか? よろしくお願いいたします .htaccess には下記の通り記述してあります ------------------------------------------------------------ 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} UP.Browser RewriteRule ^$ /mobile/index.html [R] ------------------------------------------------------------

    • ベストアンサー
    • HTML
  • .htaccessでPCと携帯サイトを振り分けたい

    急ぎの仕事で、PCサイトと携帯サイトを振り分けなければならず、 一番使いやすそうな .htaccess を試しているところです。 いろんなサイトを見て、 (PCサイト) www.aaa.com/ から (携帯サイト) www.aaa.com/i/ に振り分ける事には成功したのですが、 携帯からでも www.aaa.com/index.html と入力すると、振り分け出来ずに そのままPCサイトが表示されてしまいます。 .htaccessの記述は以下の通りです。 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 ^$ /i/index.html [R] また、auのSH008でテストを行っております。 ここから先がどうしても分からないので、 どなたか知恵を貸していただけませんでしょうか? まだ初心者で、内容を完璧には理解できておりませんので 出来ましたら全文を記述していただけると大変助かります。 以上、よろしくお願いいたします。

  • .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ではなく、携帯サイトのそれぞれの該当するページへと導くためにはどのようにしたらよいのでしょうか。  まったくの初心者ですが、よろしくお願いいたします。

  • .htaccess の書き方

    以下の .htaccess では、http://hoge.jp への携帯からのアクセスを http://hoge.jp/mobile ディレクトリへ転送させていますが、これを、 http://m.hoge.jp へ転送するには、どう記述を変えれば良いのでしょうか? ちなみに、使用予定のレンタルサーバでは、サブドメインつきのリクエストで 所定のディレクトリへアクセスさせるには、自分で .htaccess を書く必要が あるとのことです。(設定画面で設定できません) PC・携帯からのhttp://hoge.jp へのアクセスを、それぞれ PC: http://www.hoge.jp (/www/) 携帯: http://m.hoge.jp (/m/) という具合に振分転送させたいのですが・・・。 -------------------------------------- #携帯振り分け Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteCond %{REQUEST_URI} !^/mobile RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} (J-PHONE|Vodafone|Softbank|MOT-) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (KDDI|UP\.Browser) [NC,OR] RewriteCond %{HTTP_USER_AGENT} (PDXGW|DDIPOKET|WILLCOM) [NC,OR] RewriteCond %{HTTP_USER_AGENT} ASTEL [NC,OR] RewriteCond %{HTTP_USER_AGENT} L-mode [NC] RewriteRule ^(.*)$ /mobile/$1 [R,L] #「www」ありに統一 RewriteCond %{HTTP_HOST} ^(hoge\.jp)(:80)? [NC] RewriteRule ^(.*)$ http://www.hoge.jp/$1 [R=301,L]

  • .htaccessで携帯自動振り分けを設定したら、MT4iへ飛ばない

    どうしてもうまくいかなくて悩んでいます。。。 MT4iを設置し、 http://www.mydomain.com/x/blog/mt4i.cgi?id=1 にアクセスすると無事携帯電話からもPCからもブログを読むことができるようになりました。 そこで、次に携帯電話からPC用サイトのトップページ http://www.mydomain.com/ に飛んできた時に、携帯用サイトのトップページ http://www.mydomain.com/m/index.html に自動振り分けするよう、.htaccessを以下のように記述し、public_htmに設置しました。 ---------- RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo [NC,OR] RewriteCond %{HTTP_USER_AGENT} J-PHONE [NC,OR] RewriteCond %{HTTP_USER_AGENT} Vodafone [NC,OR] RewriteCond %{HTTP_USER_AGENT} SoftBank [NC,OR] RewriteCond %{HTTP_USER_AGENT} MOT- [NC,OR] RewriteCond %{HTTP_USER_AGENT} UP.Browser [NC,OR] RewriteCond %{HTTP_USER_AGENT} KDDI [NC,OR] RewriteCond %{HTTP_USER_AGENT} DDIPOCKET [NC,OR] RewriteCond %{HTTP_USER_AGENT} WILLCOM [NC,OR] RewriteCond %{HTTP_USER_AGENT} L-mode [NC,OR] RewriteRule ^$ http://www.mydomain.com/m/index.html [R] ---------- すると、今までアクセスできていた携帯用のMT4iブログ http://www.mydomain.com/x/blog/mt4i.cgi?id=1 に以下のようなメッセージが出て、アクセス拒否されてしまうようになってしまいました。 ・IEでアクセスする:「Web サイトによってこのページの表示を拒否されました HTTP 403 」 ・Operaでアクセス:「403 Forbidden」 どこがいけないのでしょうか? 誰か教えていただけると助かります。 何卒よろしくお願いいたします。

  • .htaccessを使用した携帯端末の振り分けについて

    各キャリア毎に振り分けたいのですが、.htaccessを設置したところでサーバーエラーが起きて行き詰まってしまいました。 現状は下記の記述です。 サイトから見つけて、転送先URLを書き換えただけです。 ------------------------ RewriteEngine On RewriteCond %{HTTP_USER_AGENT} DoCoMo RewriteRule ^$ /i/index.xhtml [R] RewriteCond %{HTTP_USER_AGENT} J-PHONE RewriteRule ^$ /s/index.html [R] RewriteCond %{HTTP_USER_AGENT} Vodafone RewriteRule ^$ /s/index.html [R] RewriteCond %{HTTP_USER_AGENT} UP.Browser RewriteRule ^$ /a/index.html [R] ------------------------------------ 意味を把握して使用していないので、問題点が分からない状態です。 サーバは.htaccess使用可能です。 改善策をお教えいただければ幸いです。

専門家に質問してみよう