Aktuelle URLs und aktuelle Verweise


Aktuelle URLs und aktuelle Verweise

Ich kann schlecht mit URLs wie http://kleider.herbaer.de/s2014w16/story.xml#s24_26gsyfh0_0 für meine Website werben. Besser ist eine sprechende URL wie http://kleider.herbaer.de/aktuell/schwarzer-minirock. Diese "sprechenden URLs" stelle ich in einer XML-Datei (supplement/redirects.xml) zusammen, die wie dieses Beispiel aufgebaut ist:

<?xml version="1.0" encoding="utf-8"?>
<!-- file KLEIDER/web/src/aktuell/redirects.xml -->
<!-- Beispiel für eine Quelldatei der "Umleitungen" -->
<redirects xmlns="http://herbaer.de/xmlns/20140430/redirects/">
  <redirect>
    <text>Schwarzer Minirock</text>
    <text>Minirock</text>
    <relurl>s2014w16/story.xml#s24_26gsyfh0_0</relurl>
  </redirect>
  <redirect>
    <relurl>s2014w16/story.xml#s2_26gsyf5c_0</relurl>
    <text>Rotes Tanzkleid</text>
    <text>Tanzkleid</text>
  </redirect>
  <redirect>
    <relurl>s2014w27/story.xml</relurl>
    <text>Kathrin</text>
  </redirect>
</redirects>
<!-- end of file KLEIDER/web/src/aktuell/redirects.xml -->

Die Datei redirects.rng beschreibt den Aufbau.

Umleitungen

Die umgeleiteten URLs (relativ zur Server-Wurzel) beginnen mit /aktuell/. Die Datei aktuell/.htaccess im Server-Verzeichis leitet die URLs um. Sie ist so aufgebaut:

# file KLEIDER/web/src/aktuell/htaccess.tmp
# Beispiel einer "Umleitungsdatei"

RewriteEngine On
RewriteBase /
RewriteRule ^schwarzer[-_]?minirock$ s2014w16/story.xml#s24_26gsyfh0_0 [NC,NE,R=301,L]
RewriteRule ^minirock$ s2014w16/story.xml#s24_26gsyfh0_0 [NC,NE,R=301,L]
RewriteRule ^rotes[-_]?tanzkleid$ s2014w16/story.xml#s2_26gsyf5c_0 [NC,NE,R=301,L]
RewriteRule ^tanzkleid$ s2014w16/story.xml#s2_26gsyf5c_0 [NC,NE,R=301,L]
RewriteRule ^kathrin$ s2014w27/story.xml [NC,NE,R=301,L]
RewriteRule ^schwarzer[-_]?mini s2014w16/story.xml#s24_26gsyfh0_0 [NC,NE,R=301,L]
RewriteRule ^mini s2014w16/story.xml#s24_26gsyfh0_0 [NC,NE,R=301,L]
RewriteRule ^rotes[-_]?tanz s2014w16/story.xml#s2_26gsyf5c_0 [NC,NE,R=301,L]
RewriteRule ^tanz s2014w16/story.xml#s2_26gsyf5c_0 [NC,NE,R=301,L]

# end of file KLEIDER/web/src/aktuell/htaccess.tmp

Die Datei aktuell/.htaccess wird mit der Transformation redirects_htaccess.xslt aus supplement/redirects.xml erzeugt.

Übersicht als Index-Datei (XHTML)

Die Datei aktuell/index.xhtml im Server-Verzeichis enthält eine Übersicht über die "sprechenden URL". Sie wird aus der Quelldatei supplement/redirects.xml durch die Transformation redirects_ht.xslt (Text) erzeugt. Das erzeugte XHTML-Dokument nutzt die Dateien redirects.css (Quelltext), redirects.js (Quelltext) sowie style/common.js.

Die Dateien redirects.css (Quelltext) und redirects.js (Quelltext) werden per XInclude in die Transformation eingebunden. Das erfolgt genauso wie zur Darstellung der Bildergeschichten mit denselben Dateien styleincl_step_1.xslt und styleincl_step_2.xslt. Die Transformation mit den eingebundenen Dateien erzeugt die XHTML-Datei aktuell/index.xhtml.

Mit kleinen Anpassungen kann von der Einbindung der Javascript- und CSS-Dateien per XInclude abgesehen werden. Die XHTML-Datei enthält dann Verweise auf Dateien, die der Browser einbindet. Man kann auch die Quelldatei supplement/redirects.xml mit einem Verweis auf eine XSLT-Transformation (wahlweise mit eingebundenen Javascript- und CSS-Dateien) an den Browser senden und die Transformation dem Browser überlassen. Diese Varianten erfordern aber mehr Server-Anfragen (Request) und sind allenfalls zur Fehlersuche oder Fehlerbehebung nützlich.

Automatische Verarbeitung

Das Skript redirects (Quelltext) führt die nötigen Schritte nach einer Änderung der Datei supplement/redirects.xml aus.

Internationalisierung

Die Internationalisierung und Lokalisierung der sprechenden URL ist schwierig. Einfacher ist die Internationalisierung und Lokalisierung der Texte zu den URL. Sofern die Quelldatei supplement/redirects.xml in verschiedenen Sprachen vorliegt, kann auch die Übersichtsdatei DOCROOT/aktuell/index.xhtml in verschiedenen Sprachen erzeugt werden. Abhängig von der Sprache der Quelldatei bindet die Transformation redirects_ht.xhtml die Lokalisierungsdatei local.xml.LANG ein.