Mit Einführung der neuen “Revolution”-Generation des MODX Content Management Systems ist es möglich, mehrere Domains mit einer Installation der Software MODx zu betreiben. Bisher war eine solche Konstellation nur mit workarounds zu erreichen und diese Lösungen waren auch nicht immer unter allen Aspekten der Web-Kunst 100% zuverlässig.
Nachfolgend also eine Anleitung für MODx Revolution und damit verbunden herzlichen Dank an Jason Coward (opengeek), der bei der Erstinstallation und zahllosen anderen MODx-Themen mit viel OpenSource-Energie unterstützt hat.
This document is also available in english.
Der komplette architekturelle Neuaufbau führt im MODx “Revolution”-release unter dem Stichwort “Contexts” das Konzept ein, jeder website – und anderen Elementen – innnerhalb der MODx-Datenstrukturen einen eigenen, gekapselten Bereich zuzuordnen – eben einen Kontext.
Nach der normalen Installation eines MODx Revolution Paketes sieht der Manager etwa wie folgt aus, einige Beispieldokumente habe ich bereits hinzugefügt:
Sie sehen den Standard-Context web, den MODx immer installiert und die 3 Dokumente “Start”, “MODx Revo … Tutorial” und “Error 404 page”.
Betrachtet man sich nun die Übersicht der Contexts in MODx (Menu System > Contexts),
so sieht man 2 Einträge: web, den bereits angesprochenen Standard-Context für die 1. website und mgr, den MODx Manager, der eine Sonderrolle einnimmt und das MODx-Verwaltungs-backend enthält.
Diesen Contexts fügen wir nun zwei weitere hinzu, für jede zusätzlich zu behandelnde Domain einen. Nach der Erstellung der zusätzlichen Contexts sieht es im MODx-Manager dann folgendermassen aus
Fügen Sie nun den Contexts noch einige zukünftige Standarddokumente hinzu, Sie benötigen mindestens eine Startseite/Indexseite pro Domain/Context und jeweils eine Fehlerseite.
Dabei sind Namen und Bezeichnungen nebensächlich, lediglich die Dokument-IDs benötigen wir später für die Komplettierung der Konfiguration der Contexts. Danach sollte es für jede Ihrer Domains in etwa so aussehen
Contexts sind komplett unabhängig konfigurierbar, erben aber zunächst nach dem inheritance-Prinzip alle von der Basisinstallation bekannten website-Parameter und wir werden folglich einige Parameter der jeweiligen Contexts anpassen (müssen).
Öffnen Sie im Manager zunächst wieder über System > Contexts die Ansicht der Contexts, Sie sehen dann wieder eine Ansicht entsprechend Bild 3.
Klicken Sie mit der rechten Maustaste auf den zu bearbeitenden Context (ich beginne mit “thesearch”) und wählen Sie im erscheinenden Menu “Update Context” aus. Darauf hin erscheint der Context in der Bearbeitungsansicht und Sie müssen noch auf den Reiter “Context Settings” wechseln, die dann folgende Ansicht sehen Sie hier
Sie ergänzen nun nacheinander folgende Angaben durch einen Klick auf Create new
key | value http_host | www.thesearchgoeson.com site_url | http://www.thesearchgoeson.com base_url | / site_name | MODxCMS TheSearchGoesOn test site_start | 6 error_page | 7 [optional, aber empfehlenswert] default_template | 3 [optional, wenn Sie mehrere templates vorbereitet haben]
Neben key & value müssen Sie im Dialog auch das Feld name befüllen, hier setzen Sie zweckmässige Bezeichnungen ein und die anderen Felder können Sie entsprechend der Voreinstellungen im Dialog belassen oder wo angebracht mit weiteren Informationen versehen. Die Werte für site_start und error_page können Sie in Bild 4 oder entsprechend der Angaben auf Ihrer Seite ablesen.
Wenn MODx für den eingegebenen key bereits einen Wert für das Feld name in der mitgelieferten Sprachdatei findet, werden Ihre manuellen Angaben ggf. nicht angezeigt. Am Ende der Einstellungen sehen die Context-Parameter dann etwa wie folgt aus (sortiert nach key)
Wiederholen Sie diesen Schritt für die weiteren von Ihnen einzurichtenden Domains, ich habe den Context ffmwireless ebenfalls mit den entsprechenden Einstellungen versehen und wir können damit zum letzten Schritt des Tutorials übergehen.
Zuletzt noch ein einfacher Schritt in der index.php in Ihrem MODx Wurzelverzeichnis (= dem documentroot Ihres webservers für diese MODx-Installation), Sie können diese Datei hier im Originalzustand sehen.
Löschen oder kommentieren Sie nun die Zeile 89
//$modx->initialize('web');
in dem Sie die beiden slashes “//” voranstellen und ergänzen Sie direkt nach dieser Zeile den folgenden code-Block, natürlich angepasst an Ihre Domainnamen und die Anzahl der von Ihrer Installation zu betreibenden Domains
/* setup for multiple domains */
switch(strtolower(MODX_HTTP_HOST)) {
case 'www.modx-templates.com:80':
case 'www.modx-templates.com':
// if the http_host is modx-templates.com, switch the context to web
$modx->initialize('web');
break;
case 'www.ffmwireless.de:80':
case 'www.ffmwireless.de':
// if the http_host is ffmwireless.de, switch the context to ffmwireless
$modx->initialize('ffmwireless');
break;
case 'www.thesearchgoeson.com:80':
case 'www.thesearchgoeson.com':
// if the http_host is thesearchgoeson.com, switch the context to thesearch
$modx->initialize('thesearch');
break;
default:
// by default / if no other rule can be applied, load 'web' context
$modx->initialize('web');
break;
}
Nach Ihrem code-Block sollten nun noch diese Zeilen
/* execute the request handler */
if (!MODX_API_MODE) {
$modx->handleRequest();
}
aus dem Originalcode stehen, die gesamte neue MODx indx.php Datei können Sie hier betrachten (Zeilen 91 – 112 wurden verändert).
Das war’s, Sie haben es geschafft – MODx läuft mit mehreren Domains und Sie können diese Vorgehensweise auch bei weiteren Domains/Contexts oder anderen Anlässen anwenden!
Trackback URL for this post: http://www.h-quadrat.com/techblog/93-modx-revolution-multi-domain-context-installation.php/trackback
You must be logged in to post a comment.
[...] Diese Anleitung gibt es auch auf Deutsch. [...]
[...] MODx Revolution multi-Domain Context Installation [...]