Правила перезаписи сервера Apache: как избежать «неявного принудительного перенаправления (rc=302)»?

Правила перезаписи сервера Apache: как избежать «неявного принудительного перенаправления (rc=302)»?

У меня возникла очень неприятная проблема:

наш веб-сервер обрабатывает 2 (на самом деле больше, но давайте скажем 2 для более простого примера):

  • pretassur.fr
  • pretassuragentimmobilier.fr

Вот что я хочу сделать: изменить

(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

Даже если они находятся на одном сервере, вы не можете делать внутренние перенаправления между двумя разными vhosts. Отсюда и внешний (302) редирект.

Чтобы добиться желаемого, можно использовать опцию «'proxy|P' (принудительное использование прокси)».

Связанный контент