Die Apache Rewrite Engine

Die Inhalte im Web werden immer dynamischer. Dies führt dann oft zu einer Struktur, in der nicht nur statische HTML Seiten auf den Servern abgelegt werden, sondern Inhalte aus Datenbanken und anderen Quellen während des Aufrufes generiert werden. Leider führt dies in Konsequenz zu merkwürdigen URLs in der Adressleiste des Browsers und stellt Suchmaschinen vor das Problem mit diesen Endlostextwürmern etwas anfangen zu können; gerade weil sich diese URLs durch Änderungen der Datenbankstruktur auch schnell ändern können.

Um diesem Problem zu begegnen ist im Apache Webserver ein Modul verfügbar, das den Namen mod_rewrite trägt. Diese Rewrite Engine fungiert als Übersetzer zwischen dem Browser/der Suchmaschine und dem Webserver und generiert aus kurzen, statischen Webseitenaufrufen die dementsprechenden langen URL Zugriffe auf die dynamischen Inhalte.
Die Konfiguration der Rewrite Engine kann innerhalb der Konfigration für den Server, den virtuellen Server, einem Directory oder einer .htaccess Datei erfolgen; für den Nutzer eines Webhosting Angebotes kommt die letztere Methode wahrscheinlich zum tragen.
Um die Rewrite Engine zu aktivieren ist die Direktive: RewriteEngine on in der jeweiligen Konfiguration einzustellen. Danach kann dann die Engine mit Bedingungen und Regeln bestückt werden.

In der einfachsten Form werden nun durch die Direktive RewriteRule Anfragen vom Client in spezielle URL auf dem Server übersetzt. Das Werkzeug um die Anfragen auszuwerten sind hierbei die regulären Ausdrücke, wie sie auch von vielen Programmiersprachen genutzt werden. Eine Einführung in reguläre Ausdrücke würde diesen Text sprengen, aber unter http://www.regular-expressions.info/ kann man sich mit diesem Konzept vertraut machen.

Ein Aufruf von RewriteRule hat folgende Struktur:
RewriteRule Suchausdruck Ersetzungszeichenkette [Optionale Flags] Betrachten wir einmal RewriteRule anhand eines Beispiels:
Unsere Webanwendung stellt Daten zu einem Produkt der Nummer 12 unter der URL /produkt/info.php?pID=12 dar. Dies wollen wir umschreiben in /produkt/12.

Die Regel zur Übersetzung lautet dann:
RewriteRule ^produkt/([0-9]+)/$ /info.php?pID=$1 [R]

Es wird also nach zwei Ziffern von 0-9 gesucht und aus diesen wird ein Aufruf des PHP Skriptes info.php generiert, dem dann diese beiden Ziffern als Parameter pID übergeben werden. Das Flag [R] kennzeichnet diese Regel als Ersetzungsregel. Um nun diese Regel in einer .htaccess Umgebung zu aktivieren wären die folgenden Einträge nötig:

RewriteEngine On RewriteRule ^produkt/([0-9]+)/$ /info.php?pID=$1 [R]

Möchte man diese Regel nicht für alle Anfragen aus dem Internet gelten lassen, so steht die Direktive RewriteCond zur Verfügung. Ein vor einer RewriteRule eingetragenes RewriteCond definiert eine Filterbedingung für die Ersetzung. Auf diese Art können Webseiten auf Basis des benutzten Webbrowsers bereitgestellt werden oder es werden bestimmte Bereiche für die Bots von Suchmaschinen ganz ausgeblendet. Die folgende .htaccess ist ein einfaches Beispiel für eine Browserweiche:

RewriteEngine On RewriteCond %{HTTP_USER_AGENT} ^Mozilla.* RewriteRule ^/$ /hpmoz.html [L] RewriteCond %{HTTP_USER_AGENT} ^MSIE.* RewriteRule ^/$ /hpmsie.html [L] RewriteRule ^/$ /hpalleanderen.html

Die Rewrite Engine ist ein sehr mächtiges Werkzeug und ein starker Verbündeter eines jeden Webmasters. Eine Beschäftigung mit ihr lohnt sich daher auf jeden Fall.

2007-09-20T20:35:49+00:0009. September 2007|Netztheke, WebWork - Tipps, Tricks, News|