yubb.de-Logo
Tutorials
yubb@yubb
yubbService
Inside yubb

Die Funktionsweise von mod_rewrite



Was ist mod_rewrite?
mod_rewrite ist ein Modul des Servers Apache. Jede Anfrage des Browsers wird bekanntermaßen an den Server geschickt, der dann einem die gewünschte Seite raussucht und zuschickt. Erfragt man also beim Server die Seite news.php?id=5, so sucht er die Datei news.php und schickt sie mit dem Parameter id=5 wieder zurück.
Aber www.domain.de/news.php?site=5 sieht sehr hässlich aus. Zudem haben einige Suchmaschinen Probleme mit den Parametern (Das Fragezeichen mit den darauffolgenden Werten). Besser wäre es, wenn man news5.html schreiben könnte. Aber dann müsste man ja für jede News eine eigene HTML-Seite anlegen. Eben nicht!
Lange Rede, kurzer Sinn: Dafür ist mod_rewrite gedacht. Das Modul kann Anfragen wie newsX.html erkennen und trotzdem dafür news.php?id=X senden, ohne dass der Benutzer etwas bemerkt. Das X steht dabei für eine total beliebige Zahl. So sieht die Adresse aus, als wäre sie eine statische HTML-Datei, obwohl dahinter immer noch die dynamische PHP-Datei steckt.

Unterstützt mein Server denn mod_rewrite?
Das kannst du bei deinem Hoster erfragen oder du rufst eine PHP-Datei mit dem Inhalt
PHP-Datei:
1
2
3
<?php
phpinfo
();
?>
auf und durchsuchst die Seite nach mod_rewrite. Findest du einen Eintrag, so unterstützt dein Server dieses Modul.

Wie wendet man mod_rewrite an?
Hierzu benötigt man lediglich zwei Zeilen in seiner .htaccess-Datei:

Code:

RewriteEngine On
RewriteRule ^news(.*).html$ news.php?id=$1


Die erste Zeile weist den Server an, das Modul zu laden und zu starten.
Die zweite Zeile enthält die Regel, nach die der Server eine Adressenanfrage umwandeln soll.
Das ^ leitet die Maske, in die die Adresse passen muss ein und $ beendet sie wieder, dahinter kommt sofort die Datei, die intern eigentlich aufgerufen wird. Das (.*) ist ein regulärer Ausdruck und liest alles aus, was an dieser Stelle kommt:
news1.html wird zu news.php?id=1
news125.html wird zu news.php?id=125
newstext.html wird zu news.php?id=text
Da es die erste Variable ist, erhält sie folglich den Namen $1.

Um es nochmal klarzustellen: Die Datei newsX.html braucht nicht zu existieren, man braucht auch nicht für jede News die Datei anlegen. Die Adresse newsX.html ist eine Scheinadresse. Es ist sozusagen ein Zweitname, mehr nicht.

Wer jetzt noch den regulären Ausdrücken mächtig ist, hat somit ein mächtiges Werkzeug zur Hand, um komplizierte Adressen in einfache zu verwandeln.

Geschrieben von Phil Marx am 18.06.2004 (64561x gelesen)
weiterempfehlen weiterempfehlen   Druckversion Druckversion   kommentieren kommentieren

Ich nutze gerne mod_rewrite, an sich ist es auch einfach. Man macht sich dafür mal eine halbe Stunde Gedanken, wie man die Struktur `innen` und `außen` gestalten will, und fertig.



Etwas mehr Aufwand könnte es sein, wenn man komplett die Seite so umbaut, daß jeder Link auf mod_rewrite konzipiert ist.



das Problem ist aber: viele Hoster bieten kein mod_rewrite an, da dies in dem confixx nicht vorgesehen ist - und zusätzliche Module sollen sich dann mit confixx krachen!
Geschrieben von René
Mein Anbieter hat Confixx, mod_rewrite ist aktiviert aber es kommt dann immer Fehler 403
Geschrieben von www.ga-24.de