Reguläre Ausdrücke für die .htaccess

November 12th 2013 — von TRG Kollektive

TRG Kollektive
Intelligenz

Wohl jeder, der schon einmal eine Domain umgezogen hat, hatte damit zu tun, eine Weiterleitung, von der alten zur neuen Domain, einzurichten. Bleiben alle URLs gleich, ist die Sache schnell erledigt. Eine übliche Weiterleitung mit
 

  • RewriteRule (.*) http://www.neueseite.com/$1 [R=301,L]

 
oder
 

  • RedirectPermanent / http://www.neueseite.com

 
ist rasch in der .htaccess-Datei im root-Verzeichnis eingerichtet. Wichtig ist die 301-Weiterleitung (permanent), da auf einem Apache-Server, unter dem wohl die meisten Blogs laufen, per Standard eine 302 (Found) Weiterleitung eingerichtet wird. Mehr zu den wichtigsten HTTP-Statuscodes für SEOs gibt es auf SEOmoz.
 
Was ist nun aber, wenn Sonderfälle auftreten? Kennst du dich mit regulären Ausdrücken aus oder übernimmst du „auf gut Glück“-Beiträge aus Posts, die irgendwo erscheinen?
Um die Sache mit den regulären Ausdrücken, kurz auch RegEx (für engl.: regular expressions) genannt, ein wenig verständlicher zu gestalten, hier ein paar Erklärungen. Was sind denn eigentlich RegEx? Wikipedia sagt dazu folgendes:
 
„Ein regulärer Ausdruck ist in der Informatik eine Zeichenkette, die der Beschreibung von Mengen von Zeichenketten mit Hilfe bestimmter syntaktischer Regeln dient.“
 
Mit dieser Zeichenkette werden also die Regeln formuliert, welche einen Einfluss auf die Weiterleitung haben. Am Beispiel von oben ist demnach der folgende Teil, der Ausdruck, der bei einem Seitenaufruf angewandt wird: (.*)
 
Vereinfacht gesagt, wird bei einer .htaccess-Datei in einer RewriteRule all das, was mit der RegEx gefunden wird, durch das Nachfolgende ersetzt bzw. an eine Variable („$1“) übergeben und angehängt.
 
Jedes dieser Zeichen hat eine bestimmte Bedeutung. Hier die wohl am häufigsten, bei einer einfachen 1:1 Weiterleitung, verwendeten Zeichen:
 

Zeichen Beschreibung
. steht für jedes beliebige Zeichen, auch einzeln
* das oder die Zeichen vor dem Asterisk kommen 0 oder mehrmals vor
+ das oder die Zeichen vor dem Plus-Symbol kommen mindestens 1 Mal oder mehrmals vor
( ) eine Gruppierung von einem Muster (ähnlich wie bei einer Rechnung -> (1+2)*3)

 
Die RegEx (.*) steht also für eine beliebige Zeichenkette die Punkte, Zahlen und/oder Sonderzeichen enthalten kann. Darüber hinaus gibt es aber weitere Zeichen, die eine individuelle Weiterleitung gestatten:
 

Zeichen Beschreibung
? das Zeichen vor dem Fragezeichen kommt 0 oder genau 1 Mal vor
? der Backslash kennzeichnet besondere Zeichen, die so in der URL vorkommen können (das ? wird als ? erkannt nicht als Zeichen der RegEx)
# Beginn eines Kommentars (alle nachfolgenden Zeichen in dieser Zeile werden nicht berücksichtigt)
^ kennzeichnet den Start einer Zeichenketten
$ kennzeichnet das Ende einer Zeichenkette (Zeichenkette soll mit dem davor definierten Zeichenblock enden)
^$ kennzeichnet eine Zeichenkette ohne Inhalt (leere Zeichenkette)
^test.* kennzeichnet eine Zeichenkette, die mit test beginnt, gefolgt von irgendwelchen Zeichen
^test.de$ kennzeichnet eine Zeichenkette die ausschließlich test.de enthält
! kennzeichnet eine Negierung – was danach folgt soll ausgeschlossen werden
!.html$ schließt alle URLs aus, die auf .html enden
[ ] ein Set – eine Angabe bestimmter Zeichen, ohne alle zu nennen
[a-z] alle kleingeschriebenen Zeichen des lateinischen Alphabets
[A-Z] alle großgeschriebenen Zeichen des lateinischen Alphabets
[0-9] alle Ziffern von 0-9

 
Zugegeben, so oft benötigt man den Einsatz selbst erstellter regulärer Ausdrücke nicht, jedoch ist deren Anwendung reine Übungssache. Die selbst erstellte RegEx kann man vorab unter rubular.com testen. Der eigentlich für die Programmiersprache Ruby entwickelte Editor ist bestens dafür geeignet.
 
Aus welchen Elementen eine Weiterleitung per .htaccess noch besteht, schildere ich in einem 2. Teil.

Letzter Beitrag

Sprachassistenten sind dabei, den Handel zu revolutionieren und die sich am schnellsten verbreitende Technik der Geschichte.
E-Mail-Marketing ist eine kostengünstige Online Marketing Teildisziplin und eine sehr effektive Methode – allerdings nur klar strukturiert und recherchiert.
SEA ist ein wichtiger Kanal im Online Marketing. In diesem Beitrag erklären wir, was SEA genau bedeutet, wie es funktioniert und welche Ziele durch Suchmaschinenwerbung erreicht werden können.