2009-08-14 16 views
1

多くのmod_rewriteの例を見てきましたが、あるドメインへのクエリが新しいドメインにリダイレクトされるようにURLを書き直す方法を見つけることはできません。特定のURLパラメータが追加されました。異なるサーバーへのmod_rewriteとパラメータの追加

a)は、サーバ名
b)は、アプリケーション名に
Cをincudeするパスを変更)追加URLパラメータ

などを変更します:

example.com/index.html --> new_example.com/app/index.html?user=XX 
example.com/page1.html --> new_example.com/app/page1.html?user=XX 
example.com/page2.html --> new_example.com/app/page2.html?user=XX 
example.com/page3.html --> new_example.com/app/page3.html?user=XX 

おかげで、私は次のことを達成する必要があります事前に、ケビン。

+1

あなたは[R]リダイレクトフラグを認識していますか? user =パラメータの値はどこから来ますか? – mikej

+0

user =パラメータはハードコードされているため、ソースURLから決定する必要はありません。 [R]フラグをチェックします。 ありがとうございます。 – Kevin

答えて

4

[P]リダイレクトフラグを使用して、mod_rewriteを使用して別のドメインに書き換えることができます。私が理解しているように、これはmod_proxyと同じです。

私は何を必要とすると、このでした:これを達成するために

example.com/index.html --> new_example.com/app/index.html?user=XX 
example.com/page1.html --> new_example.com/app/page1.html?user=XX 

と書き換えルールは次のとおりです。入力用

RewriteRule .* http://new_example/app$0?user=XX [P] 

感謝。

0

絶対にmod_rewriteを使って別のドメインにリダイレクトすることができます。 に別のドメインにを書き換えることはできません(つまり、ブラウザのURLは保持したまま、別のサイトのコンテンツを配信する)。

さまざまな形式のリダイレクトの例については、this article on askapache.comを参照してください。この場合

、あなたはおそらく何かしたい:

RewriteRule .* http://www.new_example.com/app/$0?user=XX [R=301,L] 
+0

'$ 1'の代わりに' $ 0'を使います。 – Gumbo

+0

問題の要点は、リダイレクトではなく、別のドメインにリライトすることです。あなたが提供した規則を適用したところ、私はリダイレクトされた範囲で動作します。 mod_rewriteではなく、他の方法で書き直しソリューションを使用することはできますか? – Kevin

0

を私はあなたとまったく同じ設定を持っていないかもしれませんが、これは、現在、私の作品:

NameVirtualHost *:80 

<VirtualHost *:80> 
    ServerName main:80 
    DocumentRoot ... 
</VirtualHost> 

<VirtualHost *:80> 
    ServerName alt:80 
    RewriteEngine On 
    RewriteCond %{HTTP_HOST} ^alt 
    RewriteRule ^/(.*) http://alt:8080/$1 [P] 
</VirtualHost> 

私は、持っています8080で聞くように指示する独自のconfファイルを使って別のApacheサーバーインスタンスを作成します。[P]はプロキシのためのものです。

これが動作するために行われない場合は...

  1. あなたは、Apacheのバージョンは何を使用していますか?
  2. 新しいドメインは同じコンピュータにインストールされているのですか、同じApacheインスタンスでホストされているのでしょうか?
+0

こちらもmod_proxyをロードする必要があります... – Kev

関連する問題