以下の .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/ [R=301,L]
No.3ベストアンサー
- 回答日時:
RewriteBase /
#「hoge.jp へ来た訪問者は、携帯の場合は m.hoge.jp へ、」
#と
#「www.hoge.jp はPCサイトの設置場所であり、携帯の訪問者が
#間違ってきたときは、m.hoge.jp へ301リダイレクトします。」
RewriteCond %{HTTP_HOST} ^hoge.jp$ [OR]
RewriteCond %{HTTP_HOST} ^www.hoge.jp$
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 ^(.*)$ http://m.hoge.jp/ [R=301,L]
#「携帯でない場合は www.hoge.jp に301リダイレクトします。」
#と
#「m.hoge.jp は携帯サイトの設置場所であり、携帯でない訪問者が
#間違ってきたときは、www.hoge.jp へ301リダイレクトします。」
RewriteCond %{HTTP_HOST} ^hoge.jp$ [OR]
RewriteCond %{HTTP_HOST} ^m.hoge.jp$
RewriteCond %{HTTP_USER_AGENT} !DoCoMo [NC]
RewriteCond %{HTTP_USER_AGENT} !(J-PHONE|Vodafone|Softbank|MOT-) [NC]
RewriteCond %{HTTP_USER_AGENT} !(KDDI|UP\.Browser) [NC]
RewriteCond %{HTTP_USER_AGENT} !(PDXGW|DDIPOKET|WILLCOM) [NC]
RewriteCond %{HTTP_USER_AGENT} !ASTEL [NC]
RewriteCond %{HTTP_USER_AGENT} !L-mode [NC]
RewriteRule ^(.*)$ http://www.hoge.jp/ [R=301,L]
#そして、www.hoge.jp へ転送されてきた訪問者は、ブラウザ
#のアドレス欄は、「www.hoge.jp」のままですが、内部的には
#「/home/www/」ディレクトリを参照します。
RewriteCond %{HTTP_HOST} ^www.hoge.jp$
RewriteCond %{REQUEST_URI} !^/home/www/.*
RewriteRule ^(.*)$ /www/$1 [L]
#「同様に、m.hoge.jp へ転送されてきた訪問者は、ブラウザ
#のアドレス欄は、「m.hoge.jp」のままですが、内部的には
#「/home/m/」ディレクトリを参照します。」
RewriteCond %{HTTP_HOST} ^m.hoge.jp$
RewriteCond %{REQUEST_URI} !^/home/m/.*
RewriteRule ^(.*)$ /m/$1 [L]
で、どうでしょう?
この回答への補足
ありがとうございます!! ドメインとディレクトリ名の
部分を書き換えたら、ほぼそのままでちゃんと動きました。
(/home はルートですので、/home/www を /www/ に修正してUP
しました。そのディレクトリ名ではなぜか動かなかったので、
ディレクト名を、/www.hoge.jp/ 、/m.hoge.jp/ にして再度修正後
UPしたら、ばっちり希望通りの動作になりました)
ホントにありがとうございました。
1点質問があるのですが、http://www.hoge.jp でアクセスしたら、
PC用のディレクトリを、http://m.hoge.jp でアクセスしたら、
携帯用のディレクトリを読みに行く部分ですが、書き換え先の
http://www.hoge.jp/www や http://m.hoge.jp/m 等は内部用の
構成ですので、直接見せたくなく、このURLへダイレクトに
リクエストがあったときは、404エラーを出したいのですが、
これはどう書き加えれば良いでしょうか?
要するに、http://www.hoge.jp/www/abc.html ではなく、
http://www.hoge.jp/abc.html でアクセスさせたいので、
リクエストURIのホスト名以外の部分で、/www/つきのリクエスト
が来たときは、「そんなページない」と言いたいのですが・・・。
No.4
- 回答日時:
~略~
RewriteRule ^(.*)$ http://www.hoge.jp/ [R=301,L]
以下から変更&追加
#そして、www.hoge.jp へ転送されてきた訪問者は、ブラウザ
#のアドレス欄は、「www.hoge.jp」のままですが、内部的には
#「/www/」ディレクトリを参照します。
RewriteCond %{HTTP_HOST} ^www.hoge.jp$
RewriteCond %{REQUEST_URI} !^/www/.*
RewriteRule ^(.*)$ /www/$1\?REWRITED=TRUE [L,QSA]
#「同様に、m.hoge.jp へ転送されてきた訪問者は、ブラウザ
#のアドレス欄は、「m.hoge.jp」のままですが、内部的には
#「/m/」ディレクトリを参照します。」
RewriteCond %{HTTP_HOST} ^m.hoge.jp$
RewriteCond %{REQUEST_URI} !^/m/.*
RewriteRule ^(.*)$ /m/$1\?REWRITED=TRUE [L,QSA]
#「/home/www/ は、直接アクセスできず、 」
RewriteCond %{HTTP_HOST} ^www.hoge.jp$
RewriteCond %{REQUEST_URI} ^/www/.*
RewriteCond %{QUERY_STRING} !^.*REWRITED=TRUE.*
RewriteRule ^(.*)$ $1 [R=404,L]
#「/home/m/ は、直接アクセスできず、」
RewriteCond %{HTTP_HOST} ^m.hoge.jp$
RewriteCond %{REQUEST_URI} ^/m/.*
RewriteCond %{QUERY_STRING} !^.*REWRITED=TRUE.*
RewriteRule ^(.*)$ $1 [R=404,L]
コードは以上
/home/www/.*を直接RewriteCondで比較して、弾いてしまうと、
RewriteRule ^(.*)$ /www/$1 [L]
の行で書き換えたURIも弾いてしまい、結果全てのリクエストが404になってしまうので、
RewriteRule ^(.*)$ /www/$1 [L]
を
RewriteRule ^(.*)$ /www/$1\?REWRITED=TRUE [L,QSA]
として、rewriteした場合に、クエリストリングにフラグを持たせ、
このフラグが入っている場合(内部リダイレクト時)は、
/home/www/*.
を参照できるようにしました
ただし、下記の件を検討してください
1.http://www.hoge.jp/www/index.html?REWRITED=TRUE
と、ブラウザでフラグをつけると見れてしまいます
これが、許容できない場合は利用しないで下さい
2.CGI等でREWRITEDをクエリで取得している場合は、別の文字列に変更してください
3.テスト不足ですので、予定通りの動きであるか必ず確認してください
で、どうでしょう?(ハァハァ、疲れた)
ありがとうございます!!!!(お礼が遅くなってすいません)
ここまでやってもらえると、なにか粗品でも送りたいですが・・・。
フラグを持たせることなんてできるんですね。
このソースはいろんな人の参考になるんじゃないかと思います。
また、実際に動かしてみることで、とても勉強になりました!
本当にどうもありがとうございました!!
No.2
- 回答日時:
#ホスト名が違う場合、正しいホスト名でリダイレクト
RewriteCond %{HTTP_HOST} ^hoge.jp$ [OR]
RewriteCond %{HTTP_HOST} ^m.hoge.jp$
RewriteRule ^(.*)$ http://www.hoge.jp/ [R=301,L]
#携帯かつURIが/m/から始まっていない場合、/m/へリダイレクト
RewriteCond %{REQUEST_URI} !^/m/.*
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 ^(.*)$ http://www.hoge.jp/m/ [R=301,L]
#携帯ではない場合でURIが/www/で始まっていない場合、/www/へリダイレクト
RewriteCond %{REQUEST_URI} !^/www/.*
RewriteCond %{HTTP_USER_AGENT} !DoCoMo [NC]
RewriteCond %{HTTP_USER_AGENT} !(J-PHONE|Vodafone|Softbank|MOT-) [NC]
RewriteCond %{HTTP_USER_AGENT} !(KDDI|UP\.Browser) [NC]
RewriteCond %{HTTP_USER_AGENT} !(PDXGW|DDIPOKET|WILLCOM) [NC]
RewriteCond %{HTTP_USER_AGENT} !ASTEL [NC]
RewriteCond %{HTTP_USER_AGENT} !L-mode [NC]
RewriteRule ^(.*)$ http://www.hoge.jp/www/ [R=301,L]
で、どうでしょうか?
この回答への補足
ありがとうございます。すごいです。
ただ、こちらの説明が下手なため、希望の動作には
なっていません。お手数ですが、あと一声お願いします。
もう一度詳しく書きます。
■前提条件
訪問者に見えるホスト名は、
hoge.jp
www.hoge.jp
m.hoge.jp
の3種類があり、それぞれ以下のディレクトリに対応させます。
/home/
/home/www/
/home/m/
このうち、/home/www/ と /home/m/ は、直接アクセスできず、
たとえば、/home/www/index.html へアクセスするには、
http://www.hoge.jp でリクエストを出す必要があります。
同様に、/home/m/index.html へアクセスするには、
http://m.hoge.jp でリクエストを出す必要があります。
■やりたいこと
hoge.jp へ来た訪問者は、携帯の場合は m.hoge.jp へ、
携帯でない場合は www.hoge.jp に301リダイレクトします。
www.hoge.jp はPCサイトの設置場所であり、携帯の訪問者が
間違ってきたときは、m.hoge.jp へ301リダイレクトします。
m.hoge.jp は携帯サイトの設置場所であり、携帯でない訪問者が
間違ってきたときは、www.hoge.jp へ301リダイレクトします。
そして、www.hoge.jp へ転送されてきた訪問者は、ブラウザ
のアドレス欄は、「www.hoge.jp」のままですが、内部的には
「/home/www/」ディレクトリを参照します。
同様に、m.hoge.jp へ転送されてきた訪問者は、ブラウザ
のアドレス欄は、「m.hoge.jp」のままですが、内部的には
「/home/m/」ディレクトリを参照します。
これを実現したいのですが、どういうコードになりますでしょうか。
うまく言えてなかったらすいません。
No.1
- 回答日時:
>
http://m.hoge.jp へ転送するには、どう記述を変えれば良いのでしょうか?>RewriteRule ^(.*)$ /mobile/$1 [R,L]
を
RewriteRule ^(.*)$ http://m.hoge.jp/ [R=301,L]
かな
この回答への補足
ありがとうございます。
ただ、http://m.hoge.jp へアクセスしたときに、
/home/m のディレクトリの読みに行くようなコードも、
うちのサーバの場合 .htaccess に書かなくてはいけないんですが、
それはどう書けば良いでしょうか?
http://www.hoge.jp へのアクセスも同じで、
/home/www を読みに行くようにコードを書かなければ
いけないのですが、どう書けばいいのかと困っております。
要するに、ブラウザの表示上は、http://www.hoge.jp
となっているが、内部的には、/home/www を読んでいる
状態にしたく、振分ルールと同時にそれも記述する必要が
あるのですが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) .htaccessの設定で、httpはhttpsに、且つ、wwwありに統一、の記述方法 2 2023/06/22 10:54
- WordPress(ワードプレス) httpからhttpsへのリダイレクト設定について 2 2022/04/17 09:49
- HTML・CSS 全部のアクセスを指定したページに転送させたい 2 2022/06/28 16:33
- その他(プログラミング・Web制作) .htaccessファイルの修正がこれで問題ないかどうか 1 2022/04/21 08:42
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- その他(IT・Webサービス) MacとWindows Google検索した時のURL表示の違いについて 1 2022/11/17 10:38
- C言語・C++・C# condaコマンドに対応したプロキシ設定が思うようにならないようです。 2 2022/04/11 17:15
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- XML XML同じ名前の要素を自動で集約するツール 1 2022/04/11 09:21
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MF-COBOL COBOL 違い
-
バッチファイルで特定のファイ...
-
Microsoft 365 の購入の誘いが...
-
Python CSVファイルについて
-
Windowsバッチファイルでリモー...
-
QRコード運用方法について詳し...
-
【至急】.htaccessによるディレ...
-
ChatGPTを使って思い通りサイン...
-
三菱 Got 1000
-
自作pcについて
-
三菱のデバイスネットユニットQ...
-
画面設計と帳票設計の違いを教...
-
エクセルを起動するとグレーな...
-
Excel マクロ 何故か部分的に作...
-
bashでコマンドが見つかりませ...
-
プロダクトキー
-
教えてgoo ログアウト方法
-
マイクロソフトから通知メール...
-
セルフレジって何の意味がある...
-
なにこのQRコード?!!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
自作pcについて
-
Microsoft 365 の購入の誘いが...
-
昔、銀行の入出金システムを開...
-
企業のサイトのクッキーを許可...
-
WindowsからSSHでサーバーにあ...
-
MF-COBOL COBOL 違い
-
バッチファイルで特定のファイ...
-
Windowsバッチファイルでリモー...
-
プロダクトキー
-
エクセル VLOOKUP ほかのエクセ...
-
マイクロソフトから通知メール...
-
エクセルを起動するとグレーな...
-
Python CSVファイルについて
-
Windows serverでマルチキャス...
-
bashでコマンドが見つかりませ...
-
おんどとりWebStorage APIから...
-
三菱 Got 1000
-
アイデア・発想になります。セ...
-
なにこのQRコード?!!
-
試用期限付きアプリの使用期間...
おすすめ情報