301 Redirects via htaccess
Wenn man eine Website aufsetzt, muss man ab und an auch den dazugehörigen Webserver ein wenig konfigurieren. Dies lässt sich abseits der eigentlichen Konfiguration (Server-seitig) noch über bestimmte Dateien im jeweils aufgrufenen Verzeichnis umkonfigurieren. Dies sind .htaccess und .htpasswd
Erstere (.htaccess) soll hier das Thema sein.
Für Windows-Nutzer ist die Benennung vielleicht irritierend: Nach Windows-Konventionen, hätte die Datei eigentlich keinen Namen, sondern nur die Dateierweiterung “.htaccess”. Nach Linux-Konventionen heisst die Datei indes schlicht “htaccess” und hat keine (!) Dateierweiterung. Der Punkt vor dem Namen weist Linux an, die Datei als versteckt zu behandeln.
Davon abgesehen handelt es sich um eine ganz normale Textdatei.
Üblicherweise werden in der .htaccess Um- oder Weiterleitungen eingetragen. Entweder für einzelne Dateien oder ganze Domains.
Domain-Weiterleitung
Wenn mehrere Domains auf die gleiche Website zeigen, ist das für Suchmachinen “double content”, was zur Abwertung führt. Die Lösung ist ein 301-Redirect. Dabei leitet der Webserver die Anfrage auf das neue Ziel und gibt als Status “301 (moved permanently)” aus.
Auf vielen Webservern lässt sich für jede Domain ein eigenes Zielverzeichnis angeben. Es wird nun also neben dem Verzeichnis der eigentlichen Website (z.B. “website_xyz”) noch ein weiteres Verzeichnis angelegt (z.B. “website_xyz_301″).
Nehmen wir an, daß die Website über folgende Domains erreichbar sein soll:
- domain1.tld
- www.domain1.tld
- domain2.tld
- www.domain2.tld
domain2.tld ist die Hauptdomain; alle Anderen sind “Nebendomains”.
domain2.tld sollte auf das Verzeichnis “website_xyz” verweisen.
Alle anderen Domains verweisen auf das Verzeichnis “website_xyz_301″.
Im Verzeichnis “website_xyz_301″ wird nun eine .htaccess mit folgendem Inhalt angelegt:
RewriteEngine On
redirect 301 / http://domain2.tld/
Das war’s.
URL-Weiterleitung und -Umschreibung
Wen man die URL-Struktur ändert (aus welchen Gründen auch immer), würden die alten URLs nicht mehr funktionieren. Besucher die über (ältere) Suchmachineneinträge kommen, bekämen dann einen 404-Fehlermeldung … es sei denn, man richtet 301-Redirects ein. Nun wäre es müßig, für jede neue URL eine eigene Umleitung einzurichten. Das geht oft auch besser:
Die URLs für z.B. Blogeinträge hatten früher folgende Form:
http://shaded-arts.com/blog/d/2009/01/09/blackmetal-26/
Später wurden die URLs in folgendes Format gebracht:
http://shaded-arts.com/blog/26/
In der .htaccess im Website-Root findet sich dazu folgendes:
RewriteRule ^blog/d/([^/]+)/([^/]+)/([^/]+)/(.*)-(.*)$ http://shaded-arts.com/blog/$5 [R=301,L]
Wenn man die alten und die neuen URLs vergleicht, sieht man, daß “/d/2009/01/09/blackmetal-” weggefallen ist. Dabei ist das “d” statisch, die Zahlen spiegeln das Datum wieder, und “blackmetal-” ist der Titel des Eintrages. Datum und Titel sind natürlich bei jedem Eintrag anders…
Man muss also “nur” die einzelnen Pfadteile der URL separieren und Variablen zuweisen. Dann kann man die URL neu zusammenbauen:
Jede URL beginnt mit “blog/d/”. Dann kommt für jeden Datumsteil ein “([^/])”, mit “/” getrennt. Zuletzt wird noch der Titel separiert mit “/(.*)-(.*)”.
Jede geklammerte Angabe lässt sich als Variable ansprechen. Die erste Angabe wäre “$1″; die letzte entsprechend “$5″.
Somit kann die neue URL zusammengebaut werden mit “$5″ am Ende, was der Blogeintrags-Id entspricht.





Seit ein paar Wochen hab’ ich an meinem Mac eine Magic Mouse. Ich muss sagen, ich hätte nicht erwartet, so zufrieden damit zu sein
Tja nun also… Urlaub ist vorbei. Ein neues Jahr ist zwischenzeitlich auch über uns hereingebrochen. DIE Gelegenheit, mal einen “Semi-Rückblick” zu gestalten
Seit einigen Wochen geistert ja der neueste “Geniestreich” unserer Politiker durch’s Netz. Die Aktualisierung des JMStV.
gegangen mit der Entscheidung, ob mein nächstes Mobiltelefon nun ein iPhone sein soll, oder nicht.
Letztes Wochenende, Freitag abend um genau zu sein, hab’ ich’s getan. Ich habe meinen Mac auf den aktuellen Betriebssystemstand gebracht. Zumindest bezogen auf eben meinen Mac. Der ist nämlich ein G5 Powermac. Und für den ist OS X 10.5/Leopard das letzte noch lauffähige OS X… Danach braucht’s eine Intel-CPU 

