2011-08-04 15 views
4

私は、複数のドメインに応答するJavaアプリケーションを持っており、各ドメインごとに特定のApache仮想ホストを使用しています。これは、静的なリソースを提供するために、ApacheがTomcatより高速であるためです。apache仮想ホストと "動的"ドメイン

実行時に再起動する必要はありません。

AddType text/html .html .shtml 
AddOutputFilter INCLUDES .html .shtml 

NameVirtualHost *:80 
UseCanonicalName Off 
<VirtualHost *:80> 
    ServerName domain.com 
    ServerAlias * 

    # Define virtual host directory, using entire domain 
    VirtualDocumentRoot /path/to/whosts/%0 

    # Define directory access 
    <Directory "/path/to/whosts/"> 
     Options -Indexes MultiViews +Includes 
     Order allow,deny 
     Allow from all 
    </Directory> 

    # Define Java Proxies 
    <Proxy *> 
     AddDefaultCharset Off 
     Order deny,allow 
     Allow from all 
    </Proxy> 

    # Allow Libs (static resources) to access apache directly 
    ProxyPass /libs ! 
    ProxyPass/ajp://localhost:8009/ 
    ProxyPassReverse/ajp://localhost:8009/ 
</VirtualHost> 

をこれがうまく動作しない、私はwww.domain.comにアクセスしようとした場合、domain.comへのアクセスよりも異なるため:下記のように私は、VirtualDocumentRootディレクティブを使用しています。このアクションを実行するには 。

www.domain.comtodomain.comからシンボリックリンクを登録することをお勧めしますか?

これを行う別の方法がありますか?私は本当にApache管理に貧弱です...

ありがとうございます!

チャオ、ダヴィデ。例えば、domain.comに対戦要求とwww.domain.comにリダイレクト -

答えて

2

私は定期的にこれと同様の構成をしているときに、同じWebルートに複数のドメインをリンクするシンボリックリンクを使用し、その溶液中の明示的な害はそれほどありません間違いなくそれを恥じる理由はない。

0

良い方法は、正規のいずれかになり、それにURLをリダイレクトするためにmod_rewriteを使用する必要のあるURLのタイプを決定することです。あなたが簡単に見つけることができるはずのWeb上でこれを行う方法に関するチュートリアルがたくさんあります。ハードコードさhttp://にあなたが、しかし、SSLを使用している場合は問題を引き起こす

RewriteEngine on 
RewriteCond %{HTTP_HOST} !^www\.$ [NC] 
RewriteRule ^(.*) http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 

:私の頭の上オフ

は、あなたのようなものを使用することができます。私はあなたがそれを避けるために、次へのRewriteRule行を変えることができると思う:

RewriteRule ^(.*) %{SERVER_PROTOCOL}://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
関連する問題