6.1 Mod Rewrite

Bei Mod Rewrite handelt es sich um eine sogenannte Rewrite Engine, die als Modul auf einem Apache Webserver ausgeführt werden kann. Mod Rewrite ermöglicht es Ihnen, die URLs Ihrer Webseite umzuschreiben. Das bedeutet, dass auf Basis von einer zuvor definierten Regel die angeforderte URL vorgetäuscht wird, was wiederum für den Besucher der Seite nicht sichtbar ist.
Die Hauptgründe, die für diese Technik sprechen sind zum einen die Suchmaschinenoptimierung durch eine saubere URL-Struktur und natürlich auch die Verbesserung der Sicherheit der Webseite durch eine Verschleierung des Dateisystems. Auch wenn Mod Rewrite ein wenig Grundwissen voraussetzt, so lohnt es sich meines Erachtens sehr dieses Modul zu verwenden, vorausgesetzt es wird auf dem Webserver bereitgestellt.

Beispiel

Durch Mod Rewrite können Sie sowohl PHP-Dateien so darstellen lassen, als wären sie herkömmliche HTML-Dateien ohne dynamische Inhalte als auch entsprechende Parameter über die URL in nahezu beliebiger Form übergeben.

Ein konkretes Beispiel mit Mod Rewrite wäre Folgendes:
http://www.webdesign-tutorial.net/1-grundlagen/1-einleitung.html

In Wahrheit würde die URL ohne Mod Rewrite aber folgendermaßen aussehen:
http://www.webdesign-tutorial.net/showContent.php?chapter=1&subchapter=1

Offensichtlich ist, dass die durch Mod Rewrite umgestellte URL deutlich besser lesbar ist und das sowohl für Suchmaschinen als auch für die Besucher der Webseite, die sich diese eventuell besser merken können.

Verwendung

Legen Sie zunächst im Grundverzeichnis, in dem auch die index.php liegt, eine Datei namens .htaccess an. Achten Sie dabei darauf, den Punkt vor dem Dateinamen nicht zu vergessen, der dafür sorgt, dass diese Datei versteckt wird.

Um die Rewrite Engine zu aktivieren reicht bereits das in Quellcode 1 gezeigte Codestück.

Quellcode 1 Mod Rewrite wird über die Datei .htaccess verwendet.
  1. RewriteEngine On
  2. RewriteBase /

Zeile 1 aktiviert die Rewrite Engine und die darauf folgende Zeile sorgt dafür, dass das Grundverzeichnis "/" als Ausgangsverzeichnis verwendet wird.

Anschließend können Sie der Datei beliebig viele Regeln hinzufügen. Quellcode 2 zeigt dazu zwei Beispiele, die Sie direkt unter den in Quellcode 1 dargestellten Zeilen platzieren können.

Quellcode 2 Durch diverse Regeln beeinflusst Mod Rewrite die Darstellung der URL.
  1. RewriteRule ^impressum.html$ impressum.php [L]
  2. RewriteRule ^([0-9]+)-([-_0-9a-z]*)/([0-9]*)-([-_0-9a-z]*).html$ showContent.php?chapter=$1&subchapter=$3 [L]

Die in der ersten Zeile definierte Regel leitet den Aufruf der Datei impressum.html an die Datei impressum.php weiter. Der Zusatz [L] sorgt dafür, dass nach dem Aufruf keine weitere Regel ausgeführt wird.
Die in Zeile 2 gezeigte Regel ist bereits sehr viel komplexer. Um via Mod Rewrite auch dynamische Inhalte weiterleiten zu können, haben Sie die Möglichkeit übergebene Parameter über Variablen weiterzureichen. In der ersten Klammer definiere ich dazu die Bedingung, dass als erster Wert mindestens eine Zahl zwischen 0 und 9 vorkommen muss. Das Plus-Zeichen definiert, dass mindestens eine oder mehrere Zahlen am Anfang der URL vorkommen müssen. Durch die Klammer wird der Wert ganz einfach gesagt in der Variable $1 gespeichert, so dass ich diese an die Datei showContent.php übergeben kann. Anschließend folgt nach einem Bindestrich eine weitere Klammer, die den Bindestrich, Unterstrich, Zahlen und Kleinbuchstaben zulässt. Der Stern bedeutet, dass diese Zeichen beliebig oft vorkommen können, also auch kein Mal. Da es sich um die zweite Klammer handelt, wird dieser Wert in der Variable $2 gespeichert, den ich in diesem Beispiel der Übersicht halber nicht übergebe.

Zusammenfassung

Um Mod Rewrite nutzen zu können muss das entsprechende Modul auf dem Webserver installiert sein. Ist dies der Fall, so können Sie über die Datei .htaccess diverse Regeln für die Manipulation der URL definieren. Bedenken Sie dabei, dass Sie die Aufrufe innerhalb Ihrer Anwendung ebenfalls umstellen müssen. Das bedeutet, dass Sie etwa über das Menü nicht mehr auf die PHP-Dateien verweisen, sondern auf die über die Rewrite Engine neu definierte URL-Struktur.
< 6 Optimierung