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
|