Regras de reescrita do servidor Apache: como evitar "forçar implicitamente o redirecionamento (rc = 302)"?

Regras de reescrita do servidor Apache: como evitar "forçar implicitamente o redirecionamento (rc = 302)"?

Estou com um problema muito chato:

nosso servidor web lida com 2 (mais na verdade, mas digamos 2 para um exemplo mais simples):

  • pretassur.fr
  • pretassuragentimmobilier.fr

Aqui está o que eu quero fazer: mudar

(whatever1).pretassuragentimmobilier.fr(/whatever2)

para

(whatever1).pretassur.fr(/whatever2)?theme=agentimmobilier

Então aqui está minha reescrita:

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]

O grande (enorme) problema é: vamos dar uma olhada nos logs de reescrita:

[pretassurmandataireimmo.com] (5)
=> setting env variable 'THEME' to 'pretassur_mandataire'
[pretassurmandataireimmo.com]
=> (2) implicitly forcing redirect (rc=302) with http://pretassur.fr/

Aaaaaaaaaarg! "forçando implicitamente o redirecionamento" => Não quero isso! Eu querointernamenteredirecionar para pretassur.fr, não para fazer um redirecionamento real!

Agora se você digitar:http://pretassurmandataireimmo.comele é redirecionado parahttp://pretassur.fr/?IDP=pretassur_mandataire(experimente) Eu não quero isso! Quero exibir esta páginahttp://pretassur.fr/?IDP=pretassur_mandatairemas sem tocar no host original!

Qualquer ideia?

Muito obrigado!

Responder1

Mesmo que estejam no mesmo servidor, você não pode fazer redirecionamentos internos entre dois vhosts diferentes. Daí o redirecionamento externo (302).

Para realizar o que deseja você pode usar a opção "'proxy|P' (forçar proxy)".

informação relacionada