AddOn


Einfaches URL-Rewrite für Redaxo 5

Beschreibung

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 zuhalten, 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.


busch-dettum.de/public/it/url_simple_rewrite.html

Umsetzung

Wolfgang Busch

An der Windmühle 3 38173 Dettum busch-dettum.de

Versionen

2.2

Für REDAXO
^5.1.0
Veröffentlicht am
10.01.2024

Die Beschreibung wurde überarbeitet.

2.1

Für REDAXO
^5.1.0
Veröffentlicht am
02.10.2020

Aus systematischen Gründen wurde wieder eine Datei 'help.php' eingefügt.

2.0

Für REDAXO
^5.1.0
Veröffentlicht am
23.06.2019

Der Code ist vollständig überarbeitet und mit 'error_reporting(E_ALL);' überprüft.
Der Extension Point FE_OUTPUT wird nicht benötigt und daher nicht mehr benutzt.
Der gesamte Source-Code ist auf UTF-8 umgestellt.
Alle im AddOn verwendeten Functions sind in einer Klasse im Ordner lib zusammengefasst.

1.2.7

Für REDAXO
^5.1.0
Veröffentlicht am
23.01.2018

Artikel werden jetzt aus ihrem URL gefunden, auch wenn letzterer Blanks, Sonderzeichen oder Umlaute enthalten (wichtig für Navigationen).

1.2.6

Für REDAXO
^5.1.0
Veröffentlicht am
02.12.2017

Der englische Sprachzweig ist angelegt (Datei en_gb.lang im Ordner lang). Eine Übersetzung der gesamten Beschreibung ist nicht vorgesehen.

1.2.5

Für REDAXO
^5.1.0
Veröffentlicht am
01.12.2017

Die ungenutzten Dateien install.php und uninstall.php entfallen jetzt.
Die Software ist natürlich gemäß MIT-Lizenz frei nutzbar, nachlesbar in einer neuen Datei LICENSE.md.

1.2.4

Für REDAXO
^5.1.0
Veröffentlicht am
23.11.2017

An etlichen Stellen werden jetzt anstelle der Methode getValue("value") die Redaxo 5-spezifischen Methoden getClang(), getTemplateId(), getName(), IsOnline() eingesetzt.

1.2.3

Für REDAXO
^5.1.0
Veröffentlicht am
07.11.2017

Neue Behandlung der Normalform-URLs

1.2.2

Für REDAXO
^5.1.0
Veröffentlicht am
17.10.2017

Überarbeitung der Beschreibung

1.2.1

Für REDAXO
^5.1.0
Veröffentlicht am
12.10.2017

Für den Normalform-URL wird jetzt der Redirect auf den NotFound-Artikel sauberer durchgeführt.
Außerdem ist der Quellcode etwas gestrafft.

1.2.0

Für REDAXO
^5.1.0
Veröffentlicht am
28.09.2017

Die Werte der Funktionen rex_article::getCurrentId() und rex_clang::getCurrentId werden jetzt entsprechend dem angezeigten Artikel angepasst.

1.1.0

Für REDAXO
^5.1.0
Veröffentlicht am
08.09.2017

Ersatz für die nicht mehr "funktionierenden" Funktionen rex_article::getCurrentId() und rex_clang::getCurrentId().
Verlegung der function get_article() von der class url_rewrite in die class fe_output.
Offline-Artikel werden nicht mehr angezeigt; stattdessen der Notfound-Artikel.

1.0.0

Für REDAXO
^5.1.0
Veröffentlicht am
13.07.2017