Software-Entwicklungen

Einfaches URL-Rewrite
url_simple_rewrite, Version 2.2
Autor: Wolfgang Busch

Dieses AddOn ist eine Erweiterung des Standard-Rewriters und nutzt den Extension Point  URL_REWRITE . Es dient im Wesentlichen nur als exemplarische Einführung in die Funktionsweise des Rewriters.
Der Artikel-URL wird hier in einer besonders einfachen Form aus Artikel-Id, Sprach-Code und Artikelname gebildet:  ID-CODE-NAME.html . Seiten können aber auch über den Redaxo-Standard-URL aufgerufen werden.
Es sind keine besonderen RewriteRules erforderlich.
 
Setzen eines Wunsch-URLs
Die URL-Standardform in Redaxo  index.php?article_id=ID&clang=CID  enthält lediglich die Artikel-Id und die Sprach-Id. In der Regel soll stattdessen jeder Artikel einen "Wunsch-URL" erhalten, der Hinweise gibt auf Artikelinhalt, Themenkategorie u.s.w.
Zur Realisierung wird eine Funktion definiert, die den gewünschten URL am Extension Point URL_REWRITE zurück gibt. Im Backend wird diese Funktion nur im Content-Kontext eines Artikels (Editieren oder andere Funktionen) aufgerufen, im Frontend nur innerhalb der Funktion rex_getUrl($article_id,$clang_id). Letztere liefert dem Redakteur (z. B. in Templates oder Modulen) den URL eines Artikels und die Anzeige im Browser-Adressfeld.

Rewrite-Mechanismus
Ein URL in der oben beschriebenen Form wird (inkl. Parameter) durch eine Umleitungsregel
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]
in der Datei .htaccess an das Redaxo CMS übergeben. Links auf Dateien oder Verzeichnisse erfolgen ohne Umleitung. In der Datei boot.php des AddOns wird der aktuelle URL inkl. Parametern mittels $_SERVER['REQUEST_URI'] ausgelesen und daraus die zugehörige Artikel-Id und seine Sprach-Id abgeleitet.

Ausblick auf reale Wunsch-URLs
Im Allgemeinen sind Artikel-Id und Sprach-Id nicht so einfach wie hier zu ermitteln. Aber der beschriebene Rahmen kann generell beibehalten werden. Zu beachten ist:
  • Zu einem Link auf eine Seite im Frontend muss der zugehörige Artikel samt Sprachversion eindeutig zu ermitteln sein.
  • Um den Aufwand für die Ermittlung des Artikels und damit die Belastung des Servers möglichst gering zu halten, kann der URL z. B. als zusätzlicher Artikelparameter (Meta Info) mitgeführt werden. Der Aufwand würde dadurch beim Zugriff auf den Artikel im Backend automatisch mit erledigt werden.
  • Für die Konstruktion des Wunsch-URL bietet sich ein Rückgriff auf den path-Parameter des Artikels an.
  • Die Kennzeichnung der Sprachversion im Frontend kann im URL mitgeführt werden, alternativ aber auch z.B. im Sinne eines "Sprach-Kontextes" in einer Session-Variablen.

AddOn-Download