<-
Apache > HTTP-Server > Dokumentation > Version 2.5 > Rewrite

Verwendung von mod_rewrite für Proxying

Verfügbare Sprachen:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn 

Dieses Dokument ergänzt die mod_rewrite Referenzdokumentation. Es beschreibt, wie man das [P]-Flag der RewriteRule verwendet, um Inhalte an einen anderen Server weiterzuleiten. Es werden verschiedene Rezepte bereitgestellt, die gängige Szenarien beschreiben.

Siehe auch

top

Proxying von Inhalten mit mod_rewrite

Beschreibung:

mod_rewrite bietet das [P]-Flag, mit dem URLs über mod_proxy an einen anderen Server weitergeleitet werden können. Hier werden zwei Beispiele gegeben. In einem Beispiel wird eine URL direkt an einen anderen Server weitergeleitet und so ausgeliefert, als wäre sie eine lokale URL. Im anderen Beispiel leiten wir fehlende Inhalte an einen Backend-Server weiter.

Lösung:

Um eine URL einfach einem anderen Server zuzuordnen, verwenden wir das [P]-Flag wie folgt:

RewriteEngine  on
RewriteBase    "/products/"
RewriteRule    "^widget/(.*)$"  "http://product.example.com/widget/$1"  [P]
ProxyPassReverse "/products/widget/" "http://product.example.com/widget/"

Im zweiten Beispiel leiten wir die Anfrage nur weiter, wenn wir die Ressource nicht lokal finden können. Dies kann sehr nützlich sein, wenn Sie von einem Server zu einem anderen migrieren und sich nicht sicher sind, ob alle Inhalte bereits migriert wurden.

RewriteCond "%{REQUEST_FILENAME}"       !-f
RewriteCond "%{REQUEST_FILENAME}"       !-d
RewriteRule "^/(.*)"                    "http://old.example.com/$1" [P]
ProxyPassReverse "/" "http://old.example.com/"
Diskussion:

In jedem Fall fügen wir eine ProxyPassReverse-Direktive hinzu, um sicherzustellen, dass alle vom Backend ausgegebenen Umleitungen korrekt an den Client weitergeleitet werden.

Erwägen Sie, wann immer möglich, ProxyPass oder ProxyPassMatch anstelle von mod_rewrite zu verwenden.

Verfügbare Sprachen:  de  |  en  |  es  |  fr  |  ja  |  ko  |  tr  |  zh-cn