非常に厄介な問題があります:
私たちの Web サーバーは 2 を処理します (実際にはもっと多いですが、簡単な例として 2 とします)。
- プレタッサー
- プレタッサージェントモビリエ
私がやりたいことはこれです:変化
(whatever1).pretassuragentimmobilier.fr(/whatever2)
に
(whatever1).pretassur.fr(/whatever2)?theme=agentimmobilier
これが私の書き直しルールです:
RewriteCond %{SERVER_NAME} (([a-z]+\.)*)pretassuragentimmobilier.(fr|com)
RewriteRule ^(.+) http://%1pretassur.fr$1 [E=THEME:pretassur_agent,QSA]
# if THEME not empty, set it :
RewriteCond %{ENV:THEME} ^(.+)$
RewriteRule (.*) $1?IDP=%{ENV:THEME} [QSA]
大きな(巨大な)問題は、書き換えログを見てみましょう。
[pretassurmandataireimmo.com] (5)
=> setting env variable 'THEME' to 'pretassur_mandataire'
[pretassurmandataireimmo.com]
=> (2) implicitly forcing redirect (rc=302) with http://pretassur.fr/
ああああああああ!「暗黙的にリダイレクトを強制する」=> そんなことはしたくない!内部的に実際のリダイレクトではなく、pretassur.fr にリダイレクトします。
ここで次のように入力します:http://pretassurmandataireimmo.comリダイレクトされるhttp://pretassur.fr/?IDP=pretassur_mandataire(試してください) それは嫌です! このページを表示したいのですhttp://pretassur.fr/?IDP=pretassur_mandataireただし、元のホストには触れずに!
何か案が?
どうもありがとう!
答え1
たとえ同じサーバー上にあるとしても、2 つの異なる vhost 間で内部リダイレクトを行うことはできません。そのため、外部 (302) リダイレクトが行われます。
目的を達成するには、「'proxy|P' (強制プロキシ)」オプションを使用できます。