2009-04-23 6 views
0

В принципе, для этого примера у меня есть 2 отдельные базы кода, v1 и v2. Я хочу перенаправить определенную область сайта v1 на v2, чтобы мы могли периодически переносить старый код на новый код.Apache переписывает определенные URL-адреса для разделения части кода

Теперь, я сделал этот точный вид переноса кода раньше, я просто не могу вспомнить точную спецификацию и не сделали ли мы какое-то apache voodoo, чтобы заставить его работать. На этот раз я могу заставить его попасть в код v2, но затем последующие запросы используют v1 vhost, и поэтому образы v2 обращаются к пути v1 и не существуют.

Так что я хочу, чтобы domain1.com/foo/bar перенаправлены на v2 кодовую в v1 виртуальный хост (в/дом/domain1) У меня есть:

RewriteRule ^/foo/?([0-9a-zA-Z]*)/?(([0-9a-zA-Z/]*))$ /home/domain2/index.php?controller=foo&action=$1&params=$2 [NC,L] 

Это успешно догоняет запрос и передает это к кодовой базе v2, но тогда кодовая база v2 продолжает использовать v1 vhost. Очевидно, что я хотел бы, чтобы ударить v2 кодовые и начать использовать этот виртуальный хост, но без использования внешнего редиректа [R]

Выхода из журнала переписывания выглядит следующим образом:

192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (2) init rewrite engine with requested uri /foo 
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (3) applying pattern '^/foo/?([0-9a-zA-Z]*)/?(([0-9a-zA-Z/]*))$' to uri '/foo' 
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (2) rewrite '/foo' -> '/home/domain2/index.php?controller=foo&action=&params=' 
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (3) split uri=/home/domain2/index.php?controller=foo&action=&params= -> uri=/home/domain2/index.php, args=controller=foo&action=&params= 
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (2) local path result: /home/domain2/index.php 
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#81783540/initial] (1) go-ahead with /home/domain2/index.php [OK] 
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#8175e4b0/initial] (2) init rewrite engine with requested uri /images/layouts/standard/header/header_logo.gif 
192.168.1.64 - - [23/Apr/2009:17:04:11 +0100] [domain1.com/sid#813071d0][rid#8175e4b0/initial] (3) applying pattern '^/foo/?([0-9a-zA-Z]*)/?(([0-9a-zA-Z/]*))$' to uri '/images/layouts/standard/header/header_logo.gif' 
... 
... 

кто может помочь с последним шагом !?

ответ

1

Если вы хотите сделать прокси-вызов на другой сервер, добавьте P к флагам.

+0

Спасибо, но это не работает правильно, и я не помню, чтобы использовать флаг P в последний раз, когда я это делал. – jmoz

+0

У вас должен быть полный URL-адрес (включая протокол) для нового источника, как и у вас с перенаправлением. Однако веб-сервер не отправляет перенаправление, а сам выполняет запрос, что делает его обратным прокси. – Lucero