Mit mod_rewrite ist es möglich, serverintern eine Adresse wie www.domain.de/ordner/unterordner/index.html?id=12 in artikel12.html zu verwandeln. Man ruft die einfachere und bessere URL auf, der Server interpretiert das und ruft die lange, komplizierte URL
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 (http://www.devmag.net/webprog/regulaere_ausdruecke.htm) 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 (13866x gelesen)
Diese News stammt von der Seite http://www.yubb.de
Sie ist unter http://www.yubb.de/artikel392.html direkt aufrufbar.
Jegliche Reproduktion dieser Seite oder ihrer Inhalte ist strengstens untersagt.