重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

はじめまして。Silver1027と申します。
以下内容の解決策に困っています。お知恵をお貸しく
ださい。

Apache+Tomactを使用したシステム構築をしています。
Tomcat上に搭載されるアプリケーションをZシステムと
仮定します。

以下のような要件があります。

1.Zシステムにはwww.z.comのURLにてアクセスします。

2.Zシステムには単独で外部に公開したいコンテンツが
 あり、例えば
 ・Aコンテンツ→www.a.com
        (実際にはwww.z.com/a/)
 ・Bコンテンツ→www.b.com
        (実際にはwww.z.com/b/)
 のようにしてアクセスさせたいと考えています。
 すべて同一IPのマシンです。

3.www.a.comでアクセスした場合、www.z.com/a/へ
 リダイレクトするのではなくあくまでブラウザの
 アドレスバーはwww.a.comでありたいと考えていま
す。

4.DNSについてはwww.a.comなどの個別ドメインの追加
 を随時行っています。

5.Apache、Tomcatいずれも設定変更時の再起動を極力
 避けたいと考えています。


このような要件に対し、以下の方式を検討してみまし
たが、いずれも十分に要求を満たせそうにありませ
ん。

・ApacheのVirtualHostでは、他ドメインのURLへ転送
 するにはリダイレクトしか方法がない(DocumentRoot設定はパス指定となりURL指定が出来な
 い)
・設定ファイル書き換えはいずれにしてもApacheのリ
 スタートがかかるためできれば避けたい
・HTTPヘッダーのHost情報を利用して、アプリケーシ
 ョン到達前にURLで振り分けられないかを考えてみた
 が挫折
 

なにかよい方法はありませんでしょうか?
皆様のお知恵、ご経験からアドバイスいただけました
らと思います。

何卒よろしくお願いいたします。

A 回答 (2件)

リダイレクトが何故ダメなのでしょうか?



Apache の再起動はやりたくないとのことですが、

# apachectl graceful

を実行することにより、既存セッションを殺さずに (利用者に悪影響を与えることなく) 再起動することは可能ですけど。

HTTP プロトコルで通信するのはクライアントと Apache ですので、Apache で解決できないとなると難しいと思います。
    • good
    • 0
この回答へのお礼

entree様、ご回答ありがとうございます。

リダイレクトがNGな理由は、その人いわく「Googleなどの検索エンジンではリダイレクトしているとその先をロボットが検索してくれない」などいろいろとあるようですが、最大の理由は「アドレスバーにリダイレクトされたアドレスを出したくない」というものです。こだわりがあるようで・・・。

gracefulオプションについては恥ずかしながらはじめて知りました。これは大変ありがたいアドバイスでした。ありがとうございます。(Windows版Apacheでも使えますよね・・・?)

再起動の問題はクリアできましたが、肝心のマルチドメインでの表示については、まだ検討しなければなりませんね。

お礼日時:2006/02/08 22:49

リダイレクトしたくないのであれば、



www.a.com
www.b.com
www.z.com

の3つの名前ベース・バーチャルホストを作成してあげれば済む問題だと思いますが。

以下は例ですが、Windows 版の Apache についてはそれほど詳しくないので、パスの書き方が間違っているかもしれません。あと、Tomcat との連携の問題は考慮していませんが・・・。

<VirtualHost www.z.com>
DocumentRoot C:\dir_z

Alias /a C:\dir_a
Alias /b C:\dir_b
</VirtualHost>

<VirtualHost www.a.com>
DocumentRoot C:\dir_a
</VirtualHost>

<VirtualHost www.b.com>
DocumentRoot C:\dir_b
</VirtualHost>

余談ですが、Windows 2000 以下のバージョンでサーバを公開する場合は、サーバライセンスも必要になる可能性があるようですのでご注意下さい。
    • good
    • 0
この回答へのお礼

entree様、追加のご回答ありがとうございます。

ご回答いただいた件ですが、VirtualHostを使用できないのは、要件の前提をお伝えしておりませんでした。

VirtualHostではご指摘のようにDocumentRootをパス指定してアクセスするように出来ますが、今回の要件では実際に見せたいサイトは動的に生成されており、物理ファイル(index.htmlなど)は存在しておりません。そのためパス指定するにもそのディレクトリが存在していない状態です。

実際に見せたいページはURLでは表現できるので、URLを記述できればいいのですが、そのときはRedirectになるので結果としてリダイレクトしか方法が無いのが現状です。

お礼日時:2006/02/10 16:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!