AddOn


path-basiertes URL-Rewrite für Redaxo 5

Beschreibung

Dieses AddOn ist eine Erweiterung des Standard-Rewriters und nutzt den Extension Point URL_REWRITE.
Der Artikel-URL wird in der Form eines Kategorien-Pfades gebildet. Die Pfadanteile werden unabhängig von den Kategorien- und Artikelnamen gebildet. Auf diese Weise können die URLs kurz und lesbar gehalten werden.
Jeder Artikel erhält diese zusätzlichen Parameter, die in der Artikel-Tabelle mitgeführt werden: einen Kurznamen, einen Kurznamen für die Kategorie und den vollständigen URL. Die zugehörigen Parameter werden als MetaInfos eingerichtet.
Die Sprache einer Seite kann wahlweise im URL gekennzeichnet werden oder im Sinne eines "Sprach-Kontextes" durch eine Session-Variable definiert sein.
Artikel können weiterhin auch über den Redaxo-Standard-URL index.php?article_id=ID&clang=CID aufgerufen werden.
In der .htaccess-Datei 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, Themenkategorien u.s.w. Er soll zugleich die Kategorie-Struktur der Website in der Form category1/category2/.../categoryN/article abbilden.
Im einfachsten Falle können die Pfadanteile aus den Kategorienamen und dem Artikelnamen gebildet werden. In der Regel führt das aber zu langen URL-Strings. Dieses AddOn erlaubt es, die Pfadanteile unabhängig von den Kategorie-/Artikelnamen einzugeben und damit übersichtlichere URLs zu erzeugen.
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 sowie 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]
n der Datei .htaccess an das Redaxo CMS übergeben. Links auf Dateien oder Verzeichnisse werden nicht umgeleitet. In der Datei boot.php des AddOns wird der ursprüngliche URL inkl. Parametern mittels $_SERVER['REQUEST_URI'] ausgelesen und daraus die zugehörige Artikel-Id und ggf. dessen Sprach-Id abgeleitet. Die Sprach-Id kann alternativ auch aus einem "Sprach-Kontext" ermittelt werden, der z.B. über eine Session-Variable realisiert ist.
.
Elemente der URL-Darstellung
Die Pfadanteile eines URLs sind als zusätzliche Parameter in der Artikel-Tabelle abgelegt und als MetaInfos editierbar. Sie sind für alle Sprachen gleich. Diese MetaInfos werden bei der Installation als Zeilen in der Tabelle rex_metainfo_field und als Spalten in der Tabelle rex_article angelegt. Bei der De-Installation werden sie nicht wieder entfernt.


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

Umsetzung

Wolfgang Busch

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

Versionen

2.4

Für REDAXO
^5.3.0
Veröffentlicht am
27.12.2023

Die Überprüfung auf nicht erlaubte "Dateinamen" / "Verzeichnisnamen" und deren Einmaligkeit innerhalb der jeweiligen Kategorie ist überarbeitet.

Der "Dateiname" eines Startartikels darf jetzt nicht mehr als leer konfiguriert werden. Das gilt auch für den Fall, dass die Dateinamen-Erweiterungen entfallen.

Beim Anlegen eines Artikels oder einer Kategorie werden weniger Messages ausgegeben.

Die Messages bei Änderung eines "Dateinamens" werden jetzt nach Aktualisierung der Metadaten auch mittels Reload der Backend-Browserseite angezeigt.

Das AddOn nutzt jetzt (nur im Backend) eine Stylesheet-Datei 'url_path_rewrite.css'.

2.3

Für REDAXO
^5.3.0
Veröffentlicht am
24.11.2023

Die Dateien im Ordner lib und die Klassennamen darin sind umbenannt.

Konstanten werden nicht mehr per 'define(...)' vereinbart, sondern als Klassen-Konstanten definiert.

Unter bestimmten Bedingungen scheiterte die Installationsprozedur. Der Fehler ist behoben.

2.2

Für REDAXO
^5.3.0
Veröffentlicht am
26.01.2021

Im Quellcode sind jetzt einige überflüssige Teile entfernt. U.a. ist der Ordner functions entfallen. Die dort enthaltenen Funktionen sind für das AddOn nicht notwendig.

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 auf zwei Klassen im Ordner lib verteilt. Hinzu kommen zwei Utility-Funktionen im Ordner functions.

1.1.1

Für REDAXO
^5.1.0
Veröffentlicht am
22.12.2017

Es werden jetzt im Artikel-Kontext keine rex_view::success-Meldungen mit dem art_custom_url mehr ausgegeben, sondern nur noch rex_view::warning-Meldungen.

1.1.0

Für REDAXO
^5.1.0
Veröffentlicht am
20.12.2017

Links auf Kategorie-Startartikel in der Form ".../" führen jetzt nicht mehr auf den NotFound-Artikel, sondern werden wie der entsprechende Link in der Form ".../index.html" angezeigt.

1.0.5

Für REDAXO
^5.1.0
Veröffentlicht am
02.12.2017

Der englische Sprachzweig ist jetzt richtig angelegt (Datei en_gb.lang im Ordner lang). Eine Übersetzung der gesamten Beschreibung fehlt weiterhin.

1.0.4

Für REDAXO
^5.1.0
Veröffentlicht am
01.12.2017

Die Software ist natürlich gemäß MIT-Lizenz frei nutzbar, nachlesbar in der zusätzlichen Datei LICENSE.md.
Die ungenutzte Datei uninstall.php entfällt jetzt.
Der englische Sprachzweig ist angelegt (Datei en_en.lang im Ordner lang). Eine Übersetzung der gesamten Beschreibung fehlt noch.

1.0.3

Für REDAXO
^5.1.0
Veröffentlicht am
01.12.2017

2 neue Utility-Funktionen zur Nutzung im Frontend: ein Menü zur Sprachauswahl im aktuellen Artikel und ein Auswahlmenü zum Wechsel zwischen konfigurierter URL-Form und Redaxo-Standard-URL, wobei die gewählte Sprache beibehalten wird.

1.0.2

Für REDAXO
^5.1.0
Veröffentlicht am
22.11.2017

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

1.0.1

Für REDAXO
^5.1.0
Veröffentlicht am
21.11.2017

Bei leerer Dateinamenserweiterung wird nicht jedesmal wieder eine Warnung ausgegeben. Das AddOn kann ja ohne Dateinamenserweiterung konfiguriert sein.

Jetzt sind nebeneinander mehrere Dateinamenserweiterungen möglich, also z.B. nicht nur .html, sondern daneben auch .php oder .css oder ...

1.0.0

Für REDAXO
^5.1.0
Veröffentlicht am
16.11.2017

Dieses AddOn ist eine Erweiterung des Standard-Rewriters und nutzt den Extension Point URL_REWRITE. Der Artikel-URL wird automatisch generiert in der Form
art_custom_url=cat_dirname1/cat_dirname2/.../art_basename
und bildet so den Kategorien-Pfad eines Artikels ab.

Ein ähnliches AddOn steht auch für Redaxo 4 zur Verfügung (Key: url_generator_rewrite).