Sie sind hier:   » ZMS home » Dokumentation » Details » How-To » Betrieb » Apache rewrite

rewrite rules für die Verwaltung multipler Domains

Autor: Dr. Volker Liebenberg, 04.09.2003

Sollen mehrere Domains innerhalb einer ZOPE/ZMS-Instanz verwaltet werden, müssen virtuelle Hosts eingerichtet und entsprechende rewrite-Regeln konfiguriert werden.

Prinzipiell ist das innerhalb von ZOPE möglich, aufgrund von Leistungsfähigkeit und Flexibilität bietet es sich jedoch an, diese Konfiguration direkt im Apache vorzunehmen.

Das folgende Beispiel beschreibt ein Portal (www.portal.de) das die Inhalte verschiedener Mandanten (instanz1.de instanz2.de usw.) übersichtsartig dargestellt werden und für weiterführende Informationen auf diese verweist.
Der Zugriff auf die Instanzen-Hierarchie erfolgt über jeweils eine eigene Domain. Die Konfiguration der virtuellen Hosts mit rewrite-Regeln erfolgt direkt in der httpd.conf:

portal.de

RewriteEngine On
RewriteRule ^PfadINSTANZ1(.*) http://www.instanz1.de:80$1/ [L,NE]
RewriteRule ^PfadINSTANZ2(.*) http://www.instanz2.de:80$1/ [L,NE]
RewriteRule ^PfadINSTANZ3(.*) http://www.instanz3.de:80$1/ [L,NE]
RewriteRule ^(.*) http://217.160.211.236:8080/VirtualHost\
Base/http/www.portal.de:80/live/ROC/VirtualHostRoot$1 [L,P,NE]

RewriteRule ^PfadINSTANZX(.*) ...
Anfragen mit dem entsprechenden URL-Pfad der Instanz werden auf die zugehörige Domain weitergeleitet. L (last rule) stoppt die Bearbeitung weiterer reWrites. NE verhindert, dass Sonderzeichen anders codiert werden, z.B. bei Suchanfragen (wildcards).

RewriteRule ^(.*) http://217.160.211.236:8080/VirtualHostBase/ http/www.portal.de:80/live/ROC/VirtualHostRoot$1 [L,P,NE]
Alle anderen Objekte (^(.*) (=Ab Zeilenanfang beliebigeZeichen in unbegrenzter Zahl) werden an das Zope-Virtual Host Monster (VHM) übergeben. Das VHM ändert die Links innerhalb der HTML-Seiten geändert. Der Parameter erzwingt einen internen Proxyrequest und maskiert damit die lange, an das VHM übergebene URL.

instanzX.de

Die zu verwendenden reWrite Rules entsprechen denen des Portals. Dies ist erforderlich, um z.B. bei internen Links eine korrekte Adressierung zu erreichen.

Beim rewriting ist darauf zu achten, dass der gesamte ZOPE-Pfad unverändert übernommen wird, um fehlerhafte Adressierung von Objekten zu vermeiden.
Eine Verwendung kürzerer Pfade ist möglich, erfordert aber komplexere reWrite-Regeln.

Die verwendeten Flags bedeuten:
   L: Ende der Regelbearbeitung (bei Treffer)
NE: Keine Codierung von Sonderzeichen
   P: erzwinge internen Proxyrequest und maskiere damit die reWrite URL

Mehr zum Thema: