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

このQ&Aのポイント
  • バーチャルドメインの参照先振り分け設定について説明します。
  • htaccessファイルを使って、複数のアドレスの参照先を別々に設定する方法について質問しています。
  • 他の方の情報を元に試してみましたが、うまくいかないため、質問をしています。
回答を見る
  • ベストアンサー

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

レンタルサーバーのバーチャルドメインを取得しました。 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 |├

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

  • ベストアンサー
回答No.7

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

ken-suke
質問者

お礼

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

ken-suke
質問者

補足

遂にできました! 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さんには、長い間お付き合いいただきまして、 大変感謝しております。 周りに頼れるものが居らず、ここへ来て初めての質問でしたので、 本当に心強かったです。 ありがとうございました!

その他の回答 (6)

回答No.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 でどうかなぁ・・・。

回答No.5

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

ken-suke
質問者

お礼

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

回答No.4

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

ken-suke
質問者

お礼

ごめんなさい。正しい言い方で伝えられていませんでした。 >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では制御できないのでは? という疑問が浮かび上がっています。 サーバー会社にも、もう一度問い合わせしてます。 ありがとうございます。

回答No.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以外のページはどうなの?という質問でした・・・。

ken-suke
質問者

お礼

引き続きありがとうございました。 お礼遅くなってすいませんでした。 やはり、こういう書き方で~ しかし残念なんですが、これを設定して、 www.XYZ***.com にアクセスしても www.ABC***.com が開いてしまう状況なんです。 サーバー会社の人はhtaccessで制御可能とだけ言ってましたが、 他に何かのファイルをイジる必要があるんですかね... なかなか難しいですね。

回答No.2

こんにちは。 >httpd.confはレンタルサーバーのため触れないみたいなんです。 あらそ・・・。 じゃぁ、mod_rewriteを使わないと仕方ないですね・・・。 もうちょっと補足して頂けますか? 両方のアドレスについて、具体的に、 1.ブラウザのアドレス欄には、どのように表示させたいのか? (index.htmlやindex.phpまで表示するとか・・・) 2.index以外はどこに向けるのか? 書き方をちょっと変えるだけで、結果が全然違ってきますので・・・。

ken-suke
質問者

お礼

1につきましては、ブラウザのアドレス欄にそれぞれ http://www.ABC***.com/ http://www.XYZ***.com/ までがベストです。 2は、index以外のファイルにアクセスがあったとき、どうするかという意味ですかね? その場合、トップページに飛ばすとかそういう設定は不要です。 (内容を履き違えていたらごめんなさい。) 色々とありがとうございます。

回答No.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フォルダになるんでしょ?

ken-suke
質問者

お礼

早速のご回答ありがとうございます。 質問の意図、正しくご理解いただけているようです。 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 引き続き、悩み中です。どうぞよろしくお願い致します。

関連するQ&A

  • 自サバ 使用していないドメインでアクセスできる?

    お世話になります。 自サバでWAN側より使用していないドメインでアクセスできてしまうので困っています。 どなたか 解決方法をお教え下さい。 症状 サーバーは アパッチです。 8年位前に ドメイン abc.com を取得しました。 このドメインを バーチャルホストのドキュメントルートに設定しました。 外部より正常にアクセスできて問題なく2年前まで運用していました。 その後 xyz-abc.com というドメインを取得し  abc.com ドメインとドキュメントルートのフォルダーごと削除しました。 アパッチのバーチャルホストの abc.com の設定はありません。 しかし 今までのメールのドメインとして使うので 自宅のメールサーバーには abc.com の設定はしてあり今現在も使用しています。 abc.com 削除後 xyz-abc.com でサイトを再構築し今現在運用しています。 xyz-abc.com でWAN側より正常にアクセスできます。 念のためにですが http://abc.com/ でのアクセスは削除してあるためできません。 先日、URLの正規化というのをアパッチサーバー、htアクセスに301リダイレクト、ネームサーバー設定し http://xyz-abc.com/ でアクセスしても http://www.xyz-abc.com/ でアクセスしても http://xya-abc.com/  に繋がるよう設定できました。 また ファイルのアクセスも index.htmlアクセスは 無しに設定し、 ドメインの後は /(スラッシュ)  でのアクセスに統一しました。 見る限りは正常にWAN側からアクセスできます。問題はありません。 問題はここからです。 このURLの正規化が終わって一月くらい過ぎて グーグルの検索結果に自分のサイトが 出ているのですがどういうわけか  index.htmlのタイトルが表示されているリンク下の部分のURLが  なぜか xya-abc.com/ ではなくて 無いはずの abc.com/  になっています??? 検索結果のリンクをクリックすると xyz-abc.com/ のサイトがWAN側より見えます? 表示されたトップページのアドレスバーは abc.com/ と 表示されています。? http://www.xyz-abc.com/、http://xyz-abc.com/ でアクセスしても  以前使用していたhttp://abc.com/に繋がります。 表示されるページは http://xyz-abc.com/ のindex.htmlです 上にも書かせてもらっていますが このドメイン abc.com は サーバーには設定していません。 それと URLの正規化後3週間くらいは こんなことはありませんでした。 abc.com では アクセスできていませんでした。 15年ほど自宅サーバーにてサイト運営を行っていますがこのような事は初めてです。 この何日間か調べて見たり 設定も確認したりしましたが  特に問題も無く この現象の解決には至りませんでした。 なぜこのようなことが起こるのか原因と解決方法をお教えいただけましたら助かります。 皆様 どうか宜しくお願いいたします。 <(_ _)>

  • ドメイン名でBasic認証を分岐させる方法

    現在公開しているWebサイトは異なる2つのドメインでアクセスでき、 両者ともサーバ上の同じディレクトリを参照するようになっています。 つまり、下記のような構成です。 (1) http://sample1.com/ でアクセスした場合  → サーバ上の「/var/www/index.php」を表示 (2) http://sample2.com/ でアクセスした場合  → これも同じくサーバ上の「/var/www/index.php」を表示 ※index.phpで表示内容を分岐しています このたび、上記の「sample2.com」の方にだけ Basic認証によるアクセス制限をかけることになりました。 普通に考えれば/var/www/にhtpasswdとhtaccessを置けばよいのですが、 それだとsample1.comの方も巻き添えでアクセス制限がかかってしまいます。 このような場合に、うまくsample2.comの方にだけ Basic認証をかけることは可能でしょうか? なお、できればhtaccessだけで解決したいのですが、 一応サーバのroot権限は持っているため、Apacheの設定もいじれます。 サーバはLAMPで、Ubuntu10.04 + Apache2.2 + PHP5.3 です。 よろしくお願いします。

  • バーチャルドメインの設定(パークドメイン)

    こんにちは。 TL7でApache,bind9によるバーチャルドメインの設定についてお聞きします。 bindでネームベースの違うドメインでのバーチャルドメインの 設定方法はどうするかわかりますでしょうか? いわゆるレンタルサーバーの運営方法です。 1:abc.com 2:def.com これをネームベースでやりたいのですがzoneの記述方法等がイマイチわかりません。 おわかりでしたらご教授ください。 よろしくお願いいたします。

  • Apache2にてバーチャルドメイン

    FedoraCore4 Apache2の環境でサーバーを運営しています。 現在の環境は下記の構成になってます。 ドメイン: example.com ttp://example.com/~ユーザ名/ でアクセス出来るように httpd.confに設定しています。 新たに追加したいバーチャルドメイン tanakaok.com 上記のバーチャルドメインにも ttp://tanakaok.com/~ユーザ名/ という風に設定するにはどこをどう設定すれば良いのでしょうか? またサブドメインにも ~/ユーザ名/という風に出来るものなのでしょうか? 例: ttp://sub.tanakaok.com/~ユーザ名/ もし出来るのであれば、上記の方法を兼ねて教えて頂ければ助かります。 どうかよろしくお願い致します。

  • サブドメインの設定について教えてください。

    初心者ですがよろしくお願いします。 (基本的な勘違いかもしれません。) 現在 abc-def.com というドメインがあったとします。 今回サブドメインを使用したいと思います。 (xxx.abc-def.com) NETWORK SOLUTIONSのドメイン管理にサブドメインの設定というものがあったのですが、 abc-[任意の文字入力欄]-def.com というふうに表示されます。 教えていただきたいのは、 1..comのサブドメインの設定には NETWORK SOLUTIONSでの登録が必要なのか?(実は、DNSサーバの設定のみで良いのか?) 2.登録が必要であれば、サブドメインのつく位置は、頭なのか、途中なのか?(「-」が有るから?) です。 よろしくお願いいたします。

  • Apacheのバーチャルドメインの設定で

    現在PHPでウェブアプリケーションを作成しています。 例えば /public_html/userpage.php?username=hogehoge というURLを http://examle.com/ のように、バーチャルドメインで表示したいと考え… DocumentRoot /public_html/userpage.php?username=hogehoge と、試してみたのですが、DocumentRootに指定した値がフォルダでも、ファイルでさえ無いため、エラーが発生し正しく設定できません。 上記のような引数を渡してユーザページを表示するようなシステムにバーチャルドメインを適用するにはどうすればよいでしょうか? おかしな質問で申し訳ありませんが、お返事頂けましたら幸いで御座います。

  • サブドメインとサブフォルダの運用方法について

    独自ドメインexample.com(ページランクなし)を取得し、これまでは、商品ごとにサブドメインを運用していました。例えば、abcという商品の場合、http://abc.example.comというサブドメイン(ページランク2)です。 しかし、サイト管理上の様々なデメリットを感じるようになりました。GoogleAnalyticsの実装一つをとっても、サブドメインごとに違うスクリプトを記載する必要があるなど、管理上の手間を感じるのと、そもそも、ドメイン取得時に、サブドメインとサブフォルダの使い分け方を知らずに、「お客様にとって入力の手間が少ない」サブドメインで運用を開始した経緯があります。 今更ですが、今後のことを考えて、サブドメインではなく、サブフォルダでの運用に切り替えたいと考えています。 現在のところ、マルチドメイン対応の共有レンタルサーバー(シックスコア)を利用しており、サーバーメニューから「サブドメイン」の設定が出来るようになっております。 仮に、サーバーメニュー上のサブドメイン設定はそのままにして、次のようなhtaccessコードを設定した場合、心配事があります。 RewriteEngine on RewriteCond %{HTTP_HOST} ^abc\.example\.com RewriteRule (.*) http://example.com/abc$1 [R=301,L] 心配事についてですが、サブフォルダにページランク2を移行させることができるかどうか、abc.example.comとexample.com/abcが同一コンテンツによるスパム扱いになってしまうのか、これらが気がかりです。 お客様の方にabc.example.comで浸透しており、一部のサイトにabc.example.comのリンクが掲載されています。また、チラシや DMなどでもabc.example.comと掲載されているものが多いため、上記のようなhtaccessでうまくいくのであれば、大変ありがたいと思っております。 ご教示いただきますと幸いです。よろしくお願い致します。

  • サブドメインとmod_rewrite

    あるレンタルサーバーで独自ドメインでサイトを運営していますが、以下のようなサブドメインの扱いを実現できる方法を探しています。 使用している独自ドメイン example.com 構成 /home/user01/www/index.html /example/index.php レンタルサーバーのエイリアス設定で「example.com」または「www.example.com」で/example/index.phpを表示するよう設定。 やりたいこと ブラウザのアドレスバーへ入力 → 実際のURL(飛ばし先) http://user.example.com/ → http://example.com/index.php?p=user http://abcd.example.com/ → http://example.com/index.php?p=abcd サブドメインは事実上クエリーなので、userの場合はとかabcdの場合はといった、事前定義的なものができません。 レンタルサーバーのためバーチャルホストは使えません。htaccessとmod_rewriteは使用可能なため、なんとかこれらで実現できないかと考えています。 これに近いことができるという表記が http://www.kawaz.jp/pukiwiki/?mod_rewrite#w1eddb33 にありましたが、自分の環境で試したところ「サーバーが見つかりません」と表示されうまく動きませんでした。最後の改行とか、そのへんのところは大丈夫です。 詳しい方、教えていただけないでしょうか。よろしくおねがいします。

  • サブドメインを設定したい

    例えばwww.abc.comでドメインを取得してますが、def.abc.comというサブドメインを設定したいのですが、方法について教えてください。

  • スマホでxampp上のバーチャルドメインにアクセス

    windows上のxamppに C:\xampp\htdocs\<バーチャルドメイン> のディレクトリを作って、windowsからは http://<バーチャルドメイン>/ でアクセスできるようにしています。 これをandroid(スマホ)から見たくて http://masterka.seesaa.net/article/248925874.html を参考に設定を変更したところ、 http://<指定したip>/ <バーチャルドメイン> でandroidからアクセスできるようになりました。 ただ、サイトルートで参照しているcss等の関係で、androidからも http://<バーチャルドメイン>/ でアクセスできるようにしたいのです。 C:\xampp\apache\conf\extra のhttpd-vhosts.confに <VirtualHost *:80> DocumentRoot C:/xampp/htdocs/<バーチャルドメイン> ServerName <バーチャルドメイン> </VirtualHost> <Directory "C:/xampp/htdocs/<バーチャルドメイン>"> order deny,allow allow from ALL </Directory> C:\Windows\System32\drivers\etc のhostsファイルに 127.0.0.1 <バーチャルドメイン> と記述したものに <指定したip> <バーチャルドメイン> と行を加えてみたのですが、うまく行きません。 アドバイスいただけると助かります。