976 Beiträge rss | 27 Nutzer online

mod_rewrite nutzen

"Es ist Voodoo, cooles Voodoo, aber immer noch Voodoo" - das ist die Einleitung zur Dokumentation für mod_rewrite. Dieser Satz ist wahr: das Umschreiben von URLs ist eine Zauberkunst. Es funktioniert zwar meist, aber man weiß nicht immer genau, warum.

Bei den meisten Providern können Sie mod_rewrite inzwischen nutzen. Falls nicht, fragen Sie danach.

Die Befehle zum Umschreiben der URI schreiben Sie in die Datei .htaccess. Als erstes schaltet

RewriteEngine on

das Umschreib-Modul ein.

Danach folgen die Befehle zum Umschreiben. Ein einfaches Beispiel:

RewriteRule ^datei1.html$ /datei2.html

Sobald ein Browser die Seite www.meineseite.foo/datei1.html laden möchte, holt der Server in Wirklichkeit den Inhalt der Seite datei2.html. In der Adressleiste bleibt datei1.html stehen.

Soll auch in der Adresseleiste statt datei1.html die Seite datei2.html angezeigt werden, so stellen Sie hinter die Zeile ein [R] für "Redirect".

RewriteRule ^datei1.html$ /datei2.html [R]

Damit erzeugen Sie einen temporären Redirect. Um einen - für Suchmaschinen besseren - permanenten Redirect zu erzwingen, geben Sie ein

RewriteRule ^datei1.html$ /datei2.html [R=permanent]

RewriteRule nutzt reguläre Ausdrücke. Damit ist mod_rewrite in der Lage, bestimmte Muster in einer URL zu erkennen. Beispiel: Die Seiten werden immer nach dem Schema das-ist-ein-toller-text_id100.html aufgerufen. Aufgabe von mod_rewrite ist, diese URI so umzuschreiben, dass eine PHP-Datei mit dem richtigen Parameter aufgerufen wird, um den Text anzuzeigen. Die Regel könnte so aussehen:

RewriteRule ^.*_id([0-9]+)\.html$ /show.php?id=$1

Das erste Zeichen ^ steht für den Anfang der URL. Danach dürfen beliebig viele Zeichen vorkommen, hierfür steht das .*. Der Punkt ist ein beliebiges Zeichen. Der * bedeutet: Dieses Zeichen muss nicht vorkommen, darf aber beliebig oft vorkommen. Es passt also www.meineseite.foo/_id100.html genauso wie www.meineseite.foo/xxxxxxxx_id100.html. Nach _id erwartet der reguläre Ausdruck mindestens eine bis unendlich viele Ziffern. Für die Ziffern steht [0-9], für die Mengenangabe das +-Zeichen. Im Gegensatz zum * muss bei + das gesuchte Zeichen mindestens einmal vorkommen.

Auf die Ziffernfolge folgt die Endung .html. Da der Punkt als Platzhalter für "beliebiges Zeichen" gilt, muss er mit einem vorangestellten \ als echter Punkt gekennzeichnet werden. Am Schluss steht das Dollarzeichen für das Ende des Strings. Bleiben noch die beiden runden Klammern. Die umschließen den Teil des Suchstrings, der die Zahl enthält. Und genau diese Zahl brauchen wir, um sie im Ersetzungsstring an Stelle des $1 einzusetzen. Fertig ist die Umleitung. Wichtig: Bevor Sie Umschreib-Regeln auf Ihren Server loslassen, testen Sie diese gründlich aus.

Mehr dazu:

Aktualisiert am: 10.12.2005




Ihr Kommentar:


Name:


Copyright © goldmann.de 1999-2012   | Tippscout 5.0
Zurück Startseite