2009-04-23 6 views
0

Grundsätzlich habe ich zwei separate Codebasen, v1 und v2 für dieses Beispiel. Ich möchte einen bestimmten Bereich der v1-Site auf v2 umleiten, sodass wir den alten Code regelmäßig in neuen Code portieren können.Apache überschreiben bestimmte URLs, um einen Teil der Codebasis zu trennen

Nun, ich habe diese Art von Code-Portierung schon einmal gemacht, ich kann mich einfach nicht mehr an die genauen Einzelheiten erinnern und ob wir Apache-Voodoo gemacht haben, um es zum Laufen zu bringen. Dieses Mal kann ich erreichen, dass es den v2-Code trifft, aber nachfolgende Anfragen verwenden den v1-vhost und die Bilder, die v2 anfordert, übersetzen also in den Pfad von v1 und existieren nicht.

Deshalb möchte ich domain1.com/foo/bar zum v2 Code-Basis umgeleitet werden, in der v1 vhost (unter/home/domain1) Ich habe:

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

Diese erfolgreich die Anfrage abfängt und übergibt es an die v2-Codebasis, aber dann verwendet die v2-Codebasis weiterhin den v1-vhost. Offensichtlich würde Ich mag es, die v2 Code-Basis zu treffen und beginnen, dass vhost zu verwenden, aber ohne eine externe Umleitung mit [R]

Die Ausgabe aus dem Rewrite-Protokoll wird wie folgt dar:

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' 
... 
... 

kann jemand helfen mit dem letzten Schritt !?

Antwort

1

Wenn Sie einen Proxy-Aufruf an einen anderen Server senden möchten, fügen Sie P zu den Flags hinzu.

+0

Danke, aber das funktioniert nicht richtig und ich kann mich nicht daran erinnern, dass ich das P-Flag beim letzten Mal benutzt habe. – jmoz

+0

Sie müssen eine vollständige URL (einschließlich Protokoll) für die neue Quelle haben, so wie Sie es bei einer Weiterleitung getan hätten. Der Webserver sendet jedoch keine Umleitung, sondern die Anforderung selbst, was ihn zu einem Reverse-Proxy macht. – Lucero

Verwandte Themen