Software-Entwicklungen

Einfaches URL-Rewrite für Redaxo 5
Version 2.1
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
Ein URL hat in Redaxo die Standardform index.php?article_id=ID&clang=CID mit Verweis auf die Artikel-Id und die Sprach-Id. In der Regel soll stattdessen jeder Artikel einen "Wunsch-URL" erhalten, der Hinweise gibt auf Artikelinhalt, Themenkategorie, Site-Struktur o. Ä. 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 (edit, metainfo, functions) 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 Link auf einen Artikel wird durch eine Umleitungsregel
RewriteRule ^(.*)$ index.php?%{QUERY_STRING} [L]       (Datei .htaccess)
an das Redaxo CMS übergeben. Links auf Dateien oder Verzeichnisse erfolgen ohne Umleitung. Die Umleitung führt zunächst auf den Site-Startartikel. Damit stattdessen der gewünschte Artikel angezeigt wird, muss die aktuelle Artikel-Id rex_article::getCurrentId() mit der Id des Artikels überschrieben werden. Bei mehrsprachigen Installationen muss auch die aktuelle Sprach-Id rex_clang::getCurrentId() durch die Sprach-Id des Artikels ersetzt werden. Artikel-Id und Sprach-Id sind aus dem URL des anzuzeigenden Artikels, d. h. aus der Variablen $_SERVER['REQUEST_URI'], zu ermitteln.

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 in Teilen auf die Arbeit des Redakteurs im Backend verlagert.
  • 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. in einer Session-Variablen.

AddOn-Download