2016-05-27 11 views
-1

のパスに複数のドメインを翻訳します:例えばは、Tomcatアプリ

localhost/app/examples/ 
localhost/app/tutorials/dogs/ 
localhost/app/tutorials/cats/ 

dogs.tutorials.com/search/?f=terrier 

をに変換する必要があります

/tutorials/dogs/search/?f=terrier 

この目標を達成するためにApacheまたはTomcatを設定することは可能ですか?どうやって? これにはApacheが必要かどうかわかりません。これはJavaアプリケーションなので、Apacheはコンテンツを提供してはならず、ドメインへのパスを変換するために使うことができます。別のポートを使用したくないのです。

答えて

0
私は mod_proxyで解決

、およびmod_substitute:応答ページでも、非相対リンクがある場合

---------------------- 
#required modules 
LoadModule substitute_module modules/mod_substitute.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 
LoadModule proxy_module modules/mod_proxy.so 
---------------------- 

<Location "/"> 
    AddOutputFilterByType SUBSTITUTE text/html 
</Location> 

<VirtualHost *:80> 
    ServerName examples.com 
    ProxyPreserveHost On 
    ProxyPass   /http://localhost:8080/TestWebApp/examples/ 
    ProxyPassReverse /http://localhost:8080/TestWebApp/examples/ 
    Substitute   "s|/TestWebApp/examples||in" 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName dogs.tutorials.com 
    ProxyPreserveHost On 
    ProxyPass   /http://localhost:8080/TestWebApp/tutorials/dogs/ 
    ProxyPassReverse /http://localhost:8080/TestWebApp/tutorials/dogs/ 
    Substitute   "s|/TestWebApp/tutorials/dogs||in" 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName cats.tutorials.com 
    ProxyPreserveHost On 
    ProxyPass   /http://localhost:8080/TestWebApp/tutorials/cats/ 
    ProxyPassReverse /http://localhost:8080/TestWebApp/tutorials/cats/ 
    Substitute   "s|/TestWebApp/tutorials/cats||in" 
</VirtualHost> 

代替のみが必要とされているので、(すべての一致する文字列を置き換えるよう、世話をする)、それらを置き換えます。

0

ウェブアプリケーションによって作成されたURLは/tutorials/dogs/search/?f=terrierとなり、Apacheフロントエンドによってdogs.tutorials.com/search/?f=terrierに書き直されなければならないため、サーバーからの応答もリアルタイムで書き直す必要があります。

更新:mod_rewritemod_substitutionの組み合わせが可能です。

パフォーマンスと複雑さの理由から、これはお勧めできません。

しかし、3つのURLが実際に3つの異なるWebアプリケーションである場合は、virtual hostingとすることができます.3つのWebアプリケーションは、3つの異なる仮想ホスト用のROOTアプリです。

+0

もちろん、回答もあります。異なるアプリケーションではなく、私は異なるパスで1つのアプリケーションを処理する方法を尋ねます。 –

+0

私はパフォーマンスと複雑さの問題を認識していますが、これはおそらく1つのアプリケーションベースで動作する異なるドメインまたはサブドメイン上の単純なオンラインツールに過ぎません。 –

+0

たとえば、これはオンラインです:http://log4jtester.com/、私は分離されたドメイン上のより多くのツールでプロジェクトを拡張したいと思います。コードはきれいなままで、分離するよりも簡単なアプリを持っていて、トラフィックは非常に少ないです。 –

関連する問題