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

解決済みの質問

バーチャルドメインの参照先振り分け設定について

レンタルサーバーのバーチャルドメインを取得しました。
2つのアドレスのいずれにアクセスされた場合も、同一のファイルを参照する状況です。
http://www.ABC***.com 元ドメイン(仮)
http://www.XYZ***.com バーチャルドメイン(仮)

この状況で、htaccessファイルを設定することで、
それぞれの参照先を別々にできることをサーバー会社より確認しました。

具体的には、下記のように振り分けできればと思っています。
(1) http://www.ABC***.com へアクセスされた場合は、そのまま、
  http://www.ABC***.com/index.html
(2) http://www.XYZ***.com へアクセスした場合は、サブディレクトリの
  http://www.XYZ***.com/sub/index.php
  (実質的には、http://www.ABC***.com/sub/index.php と同一ですが、
   閲覧者には、XYZ***.com/...で表示されるようにしたいです。)

他の方の類似した情報を元に、Rewrite設定を幾つか試してみましたが、
力が及ばずどれもうまくいかない状況で、質問させていただきました。

現状で「参照先の振り分けができること」を最優先としています。
どうぞお力添え下さいますようお願い申し上げます。

ファイル構造
www(フォルダ)
├ .htaccess
├ index.html
├ sub(フォルダ)
|├ index.php
|├

投稿日時 - 2010-11-25 09:19:53

QNo.6342578

すぐに回答ほしいです

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

こんにちは。

連投で済みません・・・。
RewriteBase /
ですね・・・多分・・・。

投稿日時 - 2010-11-29 10:45:08

補足

遂にできました!

RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.ABC***\.com [NC]
RewriteRule ^$ index.html [L]
RewriteCond %{HTTP_HOST} ^www\.XYZ***\.com [NC]
RewriteRule ^$ sub/index.php [L]


試しに RewriteRuleの / をそれぞれ抜いてみたら、やっと機能しました。
感動も一入!


takaさんには、長い間お付き合いいただきまして、
大変感謝しております。

周りに頼れるものが居らず、ここへ来て初めての質問でしたので、
本当に心強かったです。

ありがとうございました!

投稿日時 - 2010-11-29 12:07:04

お礼

度々ありがとうございます。
RewriteBaseを入れても、状況に変化ありません。
瞬間的に index.htmlの内容が表示されてしまう。
どっちにアクセスしても、単にDocumentRootのindex.htmlに繋がっているっていうことですよね。難しいです。

投稿日時 - 2010-11-29 11:47:28

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

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

回答(7)

ANo.6

こんにちは。

>RewriteLogの出力は、httpd.confで設定する以外の方法が何かありますかね。
そうでした・・・。
書けませんね、失礼しました・・・。

RewriteBaseを指定してみてはどうでしょう・・・?
つまり、
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.ABC***\.com [NC]
RewriteRule ^/$ /index.html [L] ← パスの解決ができているか、たまたま上手くいっているように見えるだけ・・・。
RewriteCond %{HTTP_HOST} ^www\.XYZ***\.com [NC]
RewriteRule ^/$ /sub/index.php [L] ← 解決できないので、DocumentRootのindex.htmlが表示される。
という感じですが・・・。

RewriteBase /virtual/www
でどうかなぁ・・・。

投稿日時 - 2010-11-29 10:37:12

ANo.5

こんばんは。

エラーにはなっていないので、mod_rewrite自体は動作していると思います・・・。
RewriteLogを適当なところに出力してみては?

投稿日時 - 2010-11-26 21:14:29

お礼

お礼が週明けになりました。ありがとうございました。
RewriteLogの出力は、httpd.confで設定する以外の方法が何かありますかね。
知識不足で申し訳ありません。調べてみます。

投稿日時 - 2010-11-29 08:24:58

ANo.4

こんにちは。

>しかし残念なんですが、これを設定して、
>www.XYZ***.com にアクセスしても
>www.ABC***.com が開いてしまう状況なんです。
おかしいですね・・・。
Rewrite側では[R]を指定していないので、ブラウザのアドレス欄は変わらないはずです。
この指定でアドレス自体が変わるのなら、それ以外にリダイレクトしているところがあるはずです。
そもそも、ドメインをListenするように設定していると思いますが、そこを見直さなければいけません。

投稿日時 - 2010-11-26 11:20:39

お礼

ごめんなさい。正しい言い方で伝えられていませんでした。

>RewriteEngine on
>RewriteCond %{HTTP_HOST} ^www\.ABC***\.com [NC]
>RewriteRule ^/$ /index.html [L]
>RewriteCond %{HTTP_HOST} ^www\.XYZ***\.com [NC]
>RewriteRule ^/$ /sub/index.php [L]

このように設定しても、www.XYZ***.comでアクセスしたときに、
www.ABC***.com/index.html の内容が表示されています。
(アドレスバーには www.XYZ***.com/ のまま表示されています。)

こちらでイジレない httpd.conf で何か設定されている場合、
.htaccessでの設定は無効なのでしょうか。

根本的に.htaccessでは制御できないのでは?
という疑問が浮かび上がっています。
サーバー会社にも、もう一度問い合わせしてます。

ありがとうございます。

投稿日時 - 2010-11-26 15:53:19

ANo.3

こんばんは。

んじゃ、
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.ABC***\.com [NC]
RewriteRule ^/$ /index.html [L]
RewriteCond %{HTTP_HOST} ^www\.XYZ***\.com [NC]
RewriteRule ^/$ /sub/index.php [L]
でよろしいかと・・・。

2.に関しては、index以外のページはどうなの?という質問でした・・・。

投稿日時 - 2010-11-25 17:51:28

お礼

引き続きありがとうございました。
お礼遅くなってすいませんでした。

やはり、こういう書き方で~
しかし残念なんですが、これを設定して、
www.XYZ***.com にアクセスしても
www.ABC***.com が開いてしまう状況なんです。

サーバー会社の人はhtaccessで制御可能とだけ言ってましたが、
他に何かのファイルをイジる必要があるんですかね...
なかなか難しいですね。

投稿日時 - 2010-11-26 09:52:47

ANo.2

こんにちは。

>httpd.confはレンタルサーバーのため触れないみたいなんです。
あらそ・・・。
じゃぁ、mod_rewriteを使わないと仕方ないですね・・・。

もうちょっと補足して頂けますか?
両方のアドレスについて、具体的に、
1.ブラウザのアドレス欄には、どのように表示させたいのか?
(index.htmlやindex.phpまで表示するとか・・・)
2.index以外はどこに向けるのか?

書き方をちょっと変えるだけで、結果が全然違ってきますので・・・。

投稿日時 - 2010-11-25 15:56:02

お礼

1につきましては、ブラウザのアドレス欄にそれぞれ
http://www.ABC***.com/
http://www.XYZ***.com/
までがベストです。

2は、index以外のファイルにアクセスがあったとき、どうするかという意味ですかね?
その場合、トップページに飛ばすとかそういう設定は不要です。
(内容を履き違えていたらごめんなさい。)

色々とありがとうございます。

投稿日時 - 2010-11-25 16:28:04

ANo.1

こんにちは。

えーと・・・、
www.XYZ***.com
でアクセスされた時に、アドレス欄は
http://www.XWZ***.com/sub/index.php
で、実際に表示するファイルは
http://www.ABC***.com/sub/index.php
という事でよろしいんですかね?
別にmod_rewrite使わんでもいいような気が・・・。

<VirtualHost *:80>
ServerName www.ABC***.com
DocumentRoot /よーわからん/www
DirectoryIndex index.html
</VirtualHost>

<VirtualHost *:80>
ServerName www.XYZ***.com
DocumentRoot /よーわからん/www/sub
DirectoryIndex index.php
</VirtualHost>

だって、XYZのドキュメントルートがsubフォルダになるんでしょ?

投稿日時 - 2010-11-25 12:22:24

お礼

早速のご回答ありがとうございます。
質問の意図、正しくご理解いただけているようです。

www.XYZ***.com
でアクセスされた時に、アドレス欄は
http://www.XWZ***.com/sub/index.php
で、実際に表示するファイルは
http://www.ABC***.com/sub/index.php
という事でよろしいんですかね?
→ その通りです!

ご提案していただいている記述は、.htaccessではなく、httpd.confファイルに書き込むものでしょうか?(httpd.confはレンタルサーバーのため触れないみたいなんです。)ちなみに「よーわからん」部分はvirtualです。

補足
サーバーOS:Linux 2.6
WEBサーバー:Apache 2.2

引き続き、悩み中です。どうぞよろしくお願い致します。

投稿日時 - 2010-11-25 15:03:32

あなたにオススメの質問