Zum Inhalt springen
Der Guide für ein smartes Leben.
Die Webseite perfekt umleiten

Teil 2: Workshop: Redirect und Modrewrite

Autoren: Redaktion pcmagazin und Andreas Hitzig • 24.2.2009 • ca. 2:45 Min

Inhalt
  1. Workshop: Redirect und Modrewrite
  2. Teil 2: Workshop: Redirect und Modrewrite
  3. Teil 3: Workshop: Redirect und Modrewrite

Basis für den Zugriff Mod_rewrite benötigt für die korrekte Ausführung der Regeln natürlich den physikalischen Ort der Daten. RewriteRule-Operationen werden immer auf das entsprechende Verzeichnis angewendet, in welchem sich die .htaccess-Datei befindet. Dies ist für die meisten Fälle ausre...

Basis für den Zugriff

Mod_rewrite benötigt für die korrekte Ausführung der Regeln natürlich den physikalischen Ort der Daten. RewriteRule-Operationen werden immer auf das entsprechende Verzeichnis angewendet, in welchem sich die .htaccess-Datei befindet. Dies ist für die meisten Fälle ausreichend, nicht jedoch, wenn Sie mit Aliasen arbeiten. Haben Sie zuvor Ihr Verzeichnis /zupublizieren auf /aktuellenews über den Befehl

Alias /aktuellenews /zupublizieren

umgelenkt, so müssen Sie dies über den Befehl RewriteBase dem Modul für die korrekte Ausführung Ihrer Befehle mitteilen.

RewriteBase /zupublizieren

wendet die Regeln auf das korrekte Ausgangsverzeichnis an.

Bedingte Regelausführung

Zur Erstellung von Regeln bietet Ihnen rewrite_mod eine einfache Syntax zur Umsetzung an. RewriteCond signalisiert den Beginn der Bedingung, anschließend erfolgt der String, welcher überprüft werden soll und anschließend die Bedingung, auf welcher der String angewendet werden soll:

RewriteCond TestString RegExp
[Parameter]

Der erste Parameter Teststring kann entweder ein normaler Text sein, oder zusätzliche Ausdrücke enthalten:

• $1 bis $9 verweist auf einen geklammerten Teilausdruck aus der nachfolgenden RewriteRule • %1 bis %9 verweist auf einen geklammerten Teilausdruck aus der vorigen RewriteCond • %[Variable] greift auf eine Servervariable zu.

Das Beispiel RewriteCond %{HTTP_USER_AGENT} msie [NC] überprüft, ob der anfragende Browser ein Internet Explorer ist, und führt nur unter diesen Bedingungen die folgende RewriteRule aus.

In eckigen Klammern sehen Sie am Ende des Ausdrucks noch den zuvor erwähnten optionalen Parameter. Davon gibt es eine Reihe mit folgenden Bedeutungen:

[NC] - Die Groß- und Kleinschreibung wird nicht beachtet [OR] - Oder-Verknüpfung mit der nächsten RewriteCond [R=301] - Leitet permanent nach extern um [L] - Bearbeitungsende, keine neuen Regeln [N] - Die ermittelte URL muss noch einmal alle Regeln durchlaufen [C] - Trifft diese Regel nicht zu, müssen keine weiteren Regeln abgearbeitet werden.

Eine gute Übersicht finden Sie beispielsweise auf der Seite mod_rewrite.de.

Regeldefinition

Als Nächstes legen Sie die Regeln für die Umleitung fest. Die Definition besteht aus zwei Teilen: dem Ausdruck, welcher die URL beschreibt, die umgeleitet werden soll und der Umleitung selbst.

Redirect und Modrewrite
Einen guten Einstieg ins Thema .htaccess finden Sie beispielsweise bei Selfhtml.
© Archiv

Die meiste Logik steckt im Ausdruck, denn dieser beschreibt mithilfe einer Perl-kompatiblen Sprache die URL, die umgeleitet werden soll. Eine detaillierte Beschreibung dazu finden Sie beispielsweise unter .Die Umleitung beschreibt die URL, auf welche bei zutreffender Bedingung umgeleitet wird. Nutzen Sie den Befehl innerhalb der .htaccess-Datei, so wird der Pfad ab dem aktuellen Verzeichnis ersetzt.Folgen im Anschluss an den Befehl noch weitere Regeln, so kann es vorkommen, dass das Zielverzeichnis erneut umgeschrieben wird. Erweitert wird die RewriteRule durch zusätzliche Parameter am Ende der Befehlszeile, über die Sie das Verhalten von mod_rewrite zusätzlich steuern können. Einen Überblick finden Sie online beispielsweise unter .

Protokollierung

Nicht immer funktionieren alle Anweisungen wie geplant und die eine oder andere Umleitung verweist ins Leere. Bei steigender Anzahl von Regeln benötigen Sie ein pragmatisches Mittel, um dem Fehler auf die Spur zu kommen. In vielen Fällen reicht ein Blick ins Protokoll, das Sie zuvor jedoch aktivieren und konfigurieren sollten. Der Befehl RewriteLog legt eine neue Datei zur Protokollierung der Rewrite- Aktionen an.

In der Dokumentation wird ausdrücklich darauf verwiesen, dass diese Datei vorrangig zur Fehlersuche und weniger zur permanenten Protokollierung der Ereignisse verwendet werden soll. Den Verweis auf die Datei können Sie entweder absolut oder relativ zum Root-Verzeichnis des Servers setzen:

RewriteLog /usr/local/apache2/logs/
meine_logs

Mithilfe des RewriteLogLevel bestimmen Sie im nächsten Schritt die Art und die Detaillierung der Protokollierung. Es stehen Ihnen insgesamt neun Stufen zur Verfügung, die Ihnen eine unterschiedliche ausführliche Darstellung bieten. Beim Wert 0 ist die Protokollierung ausgeschaltet - am anderen Ende bei Stufe 9 wird nahezu jede Aktion protokolliert, was natürlich auch spürbar zulasten der Performanz des Webservers geht. Sollten Sie eine permanente Protokollierung beabsichtigen, sollte diese maximal den Wert 2 besitzen.

RewriteLogLevel 2