Path-basiertes URL-Rewrite
url_path_rewrite, Version 2.3
Autor: Wolfgang Busch
Dieses AddOn ist eine Erweiterung des Standard-Rewriters und
nutzt den Extension Point URL_REWRITE .
Der Artikel-URL wird automatisch in der Form
category1/category2/.../categoryN/article generiert
und bildet so den Kategorien-Pfad eines Artikels ab. Für die
zugehörigen Kategorie- und Artikelbezeichnungen werden MetaInfos
eingerichtet und als zusätzliche Artikelparameter genutzt.
Die Sprache einer Seite kann wahlweise im URL oder durch eine
Session-Variable gekennzeichnet werden.
Artikel können 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
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, ...
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, 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 sowie die Anzeige im Browser-Adressfeld.
Rewrite-Mechanismus
Ein Link auf einen Artikel wird 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.
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 ist auch die aktuelle Sprach-Id
rex_clang::getCurrentId() durch die Sprach-Id des
Artikels zu ersetzen. Artikel-Id und Sprach-Id sind aus dem URL
des anzuzeigenden Artikels ( $_SERVER['REQUEST_URI'] )
zu ermitteln, ggf. auch aus mitgeführten Session-Variablen.
Elemente der URL-Darstellung:
Für die Darstellung eines URLs werden bei der
Installation des AddOns die folgenden MetaInfos angelegt, als Zeilen in
der Tabelle rex_metainfo_field und als Spalten in der Tabelle
rex_article . Sie werden bei der De-Installation nicht wieder
entfernt.
cat_dirname : "Verzeichnisname" für
jede Kategorie, Default: Kategoriename (catname )
art_basename : "Dateiname"
für jeden Artikel, Default: Artikelname mit Namenserweiterung
(name.html ),
für Kategorie-Startartikel wird der Artikelname durch "index"
ersetzt ("Dateiname": index.html )
art_custom_url : aus den obigen
Daten generierter Artikel-URL ("Custom URL", ohne führenden
"/"),
ablesbar (readonly) in den Metadaten des Artikels,
er ist für alle Sprachversionen gleich,
den Wert (mit führendem "/") liefert die Standardfunktion
rex_getUrl(article_id)
Startartikelname und Namenserweiterung können auch anders konfiguriert
werden.
Erlaubte Zeichen für die MetaInfos sind Buchstaben, Ziffern, Punkt(.), Minuszeichen(-), Unterstrich(_). Nicht erlaubt sind u.a. Umlaute oder Leerzeichen.
Kennzeichnung der Sprache:
Die Kennzeichnung der Sprache erfolgt mittels der
definierten Sprachcodes, wahlweise durch
- eine Erweiterung des angezeigten URLs um den voran gestellten Sprachcode
(
/en/cat_dirname1/... ) oder
- eine Erweiterung des angezeigten URLs um einen language-Parameter
(
.../art_basename?language=en ) oder
- eine Session-Variable
$_SESSION['language']='en' ,
ein Sprachwechsel erfolgt hier mittels language-Parameter im
Link (vergl. vorige Zeile).
Die Art der Kennzeichnung ist konfigurierbar. Bei der Standardsprache
und damit auch bei einsprachigen Installationen entfällt
sie ganz.
AddOn-Download
|