Path-basiertes URL-Rewrite 
url_path_rewrite, Version 2.4 
Autor:  Wolfgang Busch
 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]
in 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.
 
    cat_dirname:   "Verzeichnisname"
        für Kategorien, Default-Wert:  catname 
        (Kategoriename), editierbar im Kategorie-Menü 
    art_basename:   "Dateiname"
        für Artikel, Default-Wert:  name.html 
        (Artikelname, ggf. mit Namenserweiterung), editierbar im
        "Content-Kontext" des Artikels,  
        bei Kategorie-Startartikeln:  index.html 
        (vorgegebener Wert) 
    art_custom_url:   aus den obigen
        Daten generierter Artikel-URL ("Custom URL") ohne
        führenden /, ablesbar in den Artikel-Metadaten (nicht editierbar),
        den Wert (mit führendem /) liefert die Standardfunktion
         rex_getUrl(article_id,clang_id)  
 
"Dateiname"-Erweiterung und "Dateiname" eines Startartikels
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 im URL: 
Die Kennzeichnung der Sprache erfolgt mittels
der definierten Sprachcodes, wahlweise durch
 
    - eine Erweiterung des URLs um den voran gestellten Sprachcode
        (
/zz/cat_dirname1/...)
        oder 
    - eine Erweiterung des URLs um einen Parameter
        (
.../art_basename?language=zz)
        oder 
    - eine Session-Variable 
$_SESSION['language']='zz'
        (definiert den aktuellen "Sprach-Kontext"), Links auf
        anderssprachige Artikel (Sprachcode 'xy') müssen einen
        URL-Parameter language=xy enthalten (vergl.
        vorherige Zeile). 
 
Die Art der Kennzeichnung ist konfigurierbar. Bei der Standardsprache
und damit auch bei einsprachigen Installationen entfällt
sie ganz.  
 
AddOn-Download 
              
            
         |