Apache: mod_rewrite Rewrite Rules Tutorial

Was ist mod_rewrite?

mod_rewrite ist eine Bibliothek für den Apache Webserver, die Adressen (URLs) umschreiben kann. Man kann sich das in etwa wie eine Verknüpfung vorstellen, die auch Parameter an das echte Programm mit dem echten Pfad übergeben kann.

Was bringt mir mod_rewrite?

Mit mod_rewrite wird Webmastern eine schöne Möglichkeit in die Hand gelegt für noch schönere URLs zu sorgen. So vermag mod_rewrite beispielsweise aus www.bla.de/blub.php?bla=bla&bla2=bla2 www.bla.de/blub_bla-bla2, www.bla.de/blub-bla-bl2.html oder etwa www.bla.de/blub/bla/bla2/ zu machen.

Dies hat den angenehmen Effekt, dass die URLs von Suchmaschinen perfekt verfolgt werden können und der Webmaster die URLs mit Keywords anreichern kann, die sein Ranking in den Suchmaschinen positiv beeinflussen. Außerdem ist es natürlich angenehmer für die Augen und vereinfacht Direktzugriffe von Stammgästen ;)

mod_rewrite Konfiguration / Syntax

mod_rewrite handelt nach Regeln, die der Webmaster entweder in einer .htaccess Datei in dem entsprechenden Verzeichnis (bzw. einem darüberliegenden, da sie rekursiv vererbt werden) hinterlegt, oder direkt in die Konfiguration des Apache Webservers schreibt. Letzteres hat Performance-Vorteile, da der Apache keine .htaccess Datei einlesen muss. Die Syntax der Regeln entspricht Perls regulären Ausdrücken.

mod_rewrite Syntax Beispiele

Zu Beginn muss mod_rewrite aktiviert werden:

RewriteEngine On

Dann wird das Verzeichnis ausgewählt, auf das sich die Regeln beziehen:

RewriteBase /

Folgende Regel macht den Aufruf des PHP-Skriptes index.php mit den Parametern id und name auch via Aufruf einer URL möglich, die mit i_ beginnt und mit den beiden Parametern getrennt durch ein Minus weiter geht:

RewriteRule ^i_(.*)-(.*)$ index.php?id=$1&name=$2

Folgende Regel tut genau das gleiche, beschränkt die Zulässigen Datentypen der Parameter aber bei id auf einen String und bei name auf einen Integer – weichen sie ab findet kein Umschreiben statt.

RewriteRule ^i_([a-Z]*)-([0-9]*)$ index.php?id=$1&name=$2

Weitere Informationen zu regulären Ausdrücken finden sich hier. Mehr zu mod_rewrite gibt es auf Apache.org.

4 Gedanken zu „Apache: mod_rewrite Rewrite Rules Tutorial

  1. kcore (9 comments) Artikelautor

    Wünsche dir viel Spaß beim lernen :)
    Schwer ist es wirklich nicht, mehr eine Fleiß- oder Interessen-Sache.

  2. Ivan (1 comments)

    Hey das ist sehr interessant
    wollte das auch gerade bei mir ausprobieren
    habe die rule reingeschrieben
    Rewriterule ^impressum$ impressum.php
    aber sieh geht nicht :’(
    Könnt ihr mir da weiterhelfen?

  3. Genjin (1 comments)

    @Ivan: Probier mal:
    RewriteRule ^impressum$ impressum.php [L]

    @Artikel: Kam über Google her und hatte auf etwas weitergehendes gehofft, aber für Einsteiger sicher gut.

    Gruß

Kommentare sind geschlossen.