Apache
Damit der Apache-Webserver Anfragen an Zope weiterleiten kann, muss das mod_rewrite Modul mit seinen Abhängigkeiten in Apache’s httpd.conf angegeben werden:
LoadModule alias_module /usr/lib/apache2/modules/mod_alias.so LoadModule proxy_module /usr/lib/apache2/modules/mod_proxy.so LoadModule rewrite_module /usr/lib/apache2/modules/mod_rewrite.so
Meist werden die Module schon verwendet oder die einzelnen Zeilen müssen nur noch auskommentiert werden.
Anschließend können Sie in httpd.conf oder einer eingebundenen Datei einen Virtual Host für die Domain www.veit-schiele.de angeben:
NameVirtualHost 83.223.91.163:80
<VirtualHost 83.223.91.163:80>
ServerName www.veit-schiele.de
RewriteEngine on
RewriteRule ^/(.*) http://83.223.91.163:8082/VirtualHostBase/http/%{SERVER_NAME}:80/vs/VirtualHostRoot/$1 [P]
</VirtualHost>
Dies definiert den Virtual Host für die Domain www.veit-schiele.de wenn Anfragen am Port 80 hereinkommen. Die IP-Adresse 83.223.91.163 sollte derjenigen in der Listen-Anweisung entsprechen:
Listen 83.223.91.163:80
Schließlich wird unter Verwendung der RewriteEngine eine RewriteRule definiert, die für alle dem regulären Ausdruck ^(.*) entsprechenden URLs weiterleitet:
- http://83.223.91.163:8082 verweist auf den Zope-Server, auf den weitergeleitet wird;
- VirtualHostBase informiert das VirtualHostMonster über Protokoll und Host auf den umgeschrieben werden soll. In diesem Fall auf http und veit-schiele.de:80.
- Als nächstes wird der Pfad auf das Objekt angegeben, das die Site Root sein soll, also unsere Plone-Site. VirtualHostRoot beendet die Pfadangabe
- Mit $1 wird Apache nun mitgeteilt, dass alle, dem regulären Ausdruck entsprechenden Teile der URL hier angehängt werden sollen.
- L weist Apache an, wenn diese Regel zutreffend war, nicht nach weiteren Regeln zu suchen und P aktiviert das mod_proxy-Modul, das das URL-Mapping übernimmt.
Anschließend kann Apache mit apachectl graceful neu gestartet werden und die Plone-Site sollte dann unter http://www.veit-schiele.de erreichbar sein.
Anmerkung: Das root-Verzeichnis des ZMI ist nicht über den virtuellen Host erreichbar. hierzu muss weiterhin 83.223.91.163:8082 aufgerufen werden.
Login via SSL
Für SSL benötigt der Apache noch das SSL-Modul:
LoadModule ssl_module /usr/lib/apache2/modules/mod_ssl.so
Anschließend können Sie einen weiteren Virtual Host für die Domain www.veit-schiele.de am SSL-Port 443 angeben:
NameVirtualHost 83.223.91.163:443
<VirtualHost 83.223.91.163:443>
ServerName www.veit-schiele.de
SSLEngine on
SSLCertificateFile /etc/apache2/ssl.crt/server.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/server.key
</VirtualHost>
Schließlich muss noch die Listen-Anweisung für Anfragen am SSL-Port 443 eingetragen werden.
Damit nun Name und Passwort beim Anmelden eines Nutzers nicht im Klartext übertragen werden, sollte login_form nur über eine https-Verbindung erreichbar sein. Und damit die Nutzer nach dem Anmelden wieder an die Stelle der Plone-Site geleitet werden, an der sie sich anmelden wollten, wird der versteckte came_from-Wert des Anmeldeformulars gespeichert. Entsprechend kommt für den VirtualHost an Port 80 folgende Rewrite-Regel hinzu:
# Rewrites the came_from in the URL for https
RewriteCond %{QUERY_STRING} came_from=http(.*)
RewriteRule ^/(.*)login_form$ https://%{SERVER_NAME}/$1login_form?came_from=https%1 [NE,L]
Beachten Sie, dass ?came_from= nicht direkt in einer RewriteRule angegeben werden kann und daher der QUERY_STRING zunächst in der RewriteCond ausgelesen wird.
Wird login_form direkt oder auf einem ungültigen Template (z.B. logged_out) aufgerufen, wird folgende zusätzliche Regel benötigt:
# Switches to https when hit login_form or login_success
RewriteRule ^/login_(.*) https://%{SERVER_NAME}/login_$1 [NE,L]
Schließlich können in der Konfigurationsdatei des VirtualHost an Port 443 noch folgende RewriteRules angegeben werden:
# Switches to http upon logout
RewriteRule ^/(.*)logged_out http://%{SERVER_NAME}/$1logged_out [L,P]
# Keeps on https until log out
RewriteRule ^/(.*) http://83.223.91.163:8080/VirtualHostBase/https/%{SERVER_NAME}:443/vs/VirtualHostRoot/$1 [L,P]
Amerkung: Die Anleitung zur Anmeldung via SSL funktioniert nicht für das Login-Portlet.

