2012-02-16 16 views
5

mod_rewriteを使用して同じホスト上の別のポートに内部的にリダイレクトする(アドレスバーでURLが変更されないようにする)ことはできますか? 例:Apacheがmod_rewriteを内部的に別のポートに接続する

http://host.com:8080 -> http://host.com:9999/myapplication/?param=val 
+1

ルック。 – LazyOne

+0

ありがとうございます、[P]私が欲しいのはすべてです。ポイント3に関して – mm1

答えて

5

1、mod_proxyを

LoadModule proxy_module   modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 

2を有効にし、あなたがバーチャルホストのためにApacheを設定する必要があります

<VirtualHost *:8080> 
    .... 
    ProxyPass/http://host.com:9999/myapplication/?param=val 
    ProxyPassReverse/http://host.com:9999/myapplication/?param=val 

</VirtualHost> 

3、ポート9999

詳細情報でのセットアップもバーチャルホストここに:

+0

:あなたはあなたの答えにそれを行う方法を含めることができますか?ありがとう – kiltek

0

推敲[P]とのmod_proxyソリューション、プロキシフラグに:有効になってこれらの2がなければ

a2enmod proxy proxy_http 

  1. はモジュールmod_proxyとmod_proxy_http有効、 君は' dは後で300個の禁止された状態を取得し、エラーメッセージ "AH00669:ログにmod_rewriteからのプロキシを使用せずにリモート要求を実行しようとしました"が表示されます。ホストを転送ためのApache2のバーチャルホストの設定]セクションに次の

  2. 場所:これはexplained here、悪意のあるURLクラフトを防ぐために、スティーブ・ウェブスター技術が含まれて

    <VirtualHost *:8080> 
        … 
        RewriteEngine on 
        RewriteCond %{REQUEST_URI} !^$ 
        RewriteCond %{REQUEST_URI} !^/ 
        RewriteRule .*    - [R=400,L] 
    
        RewriteRule (.*) http://host.com:9999/myapplication/$1?param=val [P,L] 
        … 
    </VirtualHost> 
    

    。ただし、このコンテキストでGETパラメータを追加する方法についてはわかりません。

  3. 再起動のApache2:のRewriteRuleの `mod_proxy` ..ならびに` [P] `(プロキシ)フラグで

    sudo service apache2 restart 
    
関連する問題