Die Mischung von dynamischen und statischen Inhalten ist in OpenCms möglich. Doch es stellen sich einige Detailfragen, die für die Gestaltung komplexerer Webanwendungen von Relevanz sind. Dieser Artikel beschreibt, wie wir diese Aufgaben gelöst haben. (Ein technisches Thema ;o)
1) Änderung des Export-Pfades für statische Inhalte
Von Hause aus werden von OpenCms die als statisch gekennzeichneten Daten in einem speziellen Ordner (/opencms/export/) abgelegt. Dies trifft auch für die nicht HTML Elemente (PDF, Word, Excel, ZIP) Dateien zu.
Genau dieses Verfahren ist aber für sogenannte sprechende URL´s wenig praktikabel. Es entstehen dadurch Pfade wie z.B.:
www.meinedomain.de/opencms/export/download/produktblatt.pdf
wünschenswert wäre aber:
www.meinedomain.de/download/produktblatt.pdf
was nicht nur schöner aussieht, sondern auch für das Ranking in Suchmaschinen von belang ist.
Lösung:
PLANET IC hat OpenCms so verändert, dass statische Inhalte nicht mehr im /opencms/export/ Ordner abgelegt werden, sondern unter dem Pfad der in OpenCms (VFS) vom Redakteur angelegt wurde.
Aus dieser Lösung ergibt sich gleich die nächste Frage:
2) Wie unterscheidet der WebServer nun dynamische und statische Inhalte?
Ein paar Worte zur Einleitung:
In der Standard-OpenCms Installation arbeiten der Webserver und das Servlet (z.B. Apache + Tomcat) wie folgt:
Anfrage, die an URL´s:
www.meinedomain.de/opencms/opencms/
werden an Tomcat weitergeleitet und OpenCms beanwortet diese dynamisch.
Anfragen an:
www.meinedomain.de/opencms/export/
werden aus dem Filesystem beantwortet (statisch)
Durch eine Umkonfiguration von OpenCms kann der Pfad /opencms/opencms/ entfernt werden. In der Standard-Installation bleibt aber weiterhin der Pfad /export/ erhalten, der dem Webserver als Erkennungsmerkmal für statischen Inhalten dient.
Da wir diesen Pfad aber bereits unter 1) entfernt haben bedarf es eines weiteren Eingriffs, damit der Webserver die Behandlung von statischen und dynamischen Inhalte unterscheiden kann.
Lösung:
Der Apache muss im Modus mod_proxy betrieben werden. Durch eine Rewriting Regel für den Apache, wird dieser angewiesen bei allen Anfragen zuerst im Filesystem nachzusehen, ob die Ressource dort vorliegt. Wenn ja, wird diese ausgeliefert. Wenn nein, wird die Anfrage an Tomcat/OpenCms weitergeleitet und dort bearbeitet.
Zu beachten ist dabei, dass es ausserhalb von OpenCms Inhalte und Applikationen in Filesystem des Webservers geben kann, die nicht mit OpenCms kollidieren dürfen. So könnten zum Beispiel in einem Ordner /shop/ die nötigen Dateien für Shopsystem abgelegt sein. Dieser Ordner darf dann in OpenCms nicht als statischer Bereich angelegt werden, da er die vorhandenen Shop-Dateien überschreiben würde. Als dynamische Ressource wären die OpenCms Inhalte einfach nicht mehr erreichbar.
Dieses Problem lässt sich sowohl organisatorisch als auch durch das Setzen entsprechender Schreibrechte auf Ressourcen “externer” Applikationen lösen.
Detailfragen gerne an mich!
http://www.planet-ic.de/agentur/cms/