Praktische Anwendungen von URL rewrite

Heute möchte ich weitere praktische Beispiele für die Verwendung von mod_rewrite in .htaccess Dateien vorstellen.

Aus *.php wird *.html

Wenn man nicht möchte, dass jeder auf Anhieb mitbekommt, dass PHP zum Einstaz kommt, welches sich leicht an der Dateinamenserweiterung .php erkennen lässt, so kann kann mit dem folgenden Code wenigstens den Anschein auf statische html-Seiten wahren.

In unserem Beispiel werden je Aufruf von z.B. kontakt.htm das php Äquivalent, also kontakt.php, aufgerufen:

RewriteEngine on
RewriteRule ^(.*).html$ $1.php

Falls alle Anfragen mit einer Datei bearbeitet werden sollen, so gibt es hier die passende Lösung.

Aus *.php wird *.html Nummer zwei

Wenn im Suchmaschinenindex von z.B. Google noch URL’s die mit .php enden gelistet sind, so können wir zum einen Google mitteilen die URL nicht weiter zu verwenden und zum anderen, den Besucher der die alte alte URL anklickt, auf die neue mit .html endende URL umleiten. Google hört dabei auf den Befehl: 301 und das heißt “ Moved Permanently“; also sinngemäß, dauerhaft umgezogen.

RewriteEngine on
RewriteRule ^([^.]+)\.html$ /$1.php?rw=1 [QSA,L] 
RewriteCond %{QUERY_STRING} !^rw=1 
RewriteRule ^([^.]+)\.php$ /$1.html [R=301,L]

Vermeidung von Hotlinking

Unter Hotlinking versteht man das einbinden von Bildern auf einer Website, die auf einem anderen Server liegen. Wenn es sich zum Beispiel um eine bekannte Webcam handelt, kann dieses Hotlinking zu hohem Traffic und unter Umständen zu einem verlangsamten Seitenaufbau dieser Website kommen, da ja von diesem Hosting Bandbreite geraubt wird.

In einem vergangenen (Bild-)Projekt welches eine gute Platzierungen in der Google Bilder-Suche hatte, wurden durch Hotlinking auf unerlaubte Art und Weise Bilder auf fremden Websites eingebunden. Um dies zu verhindern verwenden wir eine .htaccess Datei mit dem folgenden Inhalt:

#RewriteEngine starten
RewriteEngine On
#Festlegen des Wurzel-Verzeichnis
RewriteBase /

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/.*$ [NC]
RewriteRule .*\.(gif|jpg)$ - [F,L]

Die 3 Zeilen haben dabei die folgende Aufgabe. Erfolgt ein Aufruf vom Refferer ungleich unserer Domain, dann verbiete den Zugriff auf alle Grafiken vom Typ gif und jpg.

Um einer Domain das Hotlinking zu erlauben, einfach die folgende Zeile nach Zeile 2 einfügen und Domain Namen anpassen (wie immer, natürlich).

RewriteCond %{HTTP_REFERER} !^http://(www\.)?erlaubt\.com/.*$ [NC]

Weiterleitung alte URL auf neue URL und ein Moved Permanently

Wer hat nicht schon mal die URL zu einer Seite durch eine andere ersetzt, weil sich in der Struktur oder dem generellen Aufbau der Links etwas geändert hat. Doch wie teilt man diese Um-/Weiterleitung Google und Co. korrekt mit?

Der einfachste und beste Weg dazu ist die serverseitige Weiterleitung mit Hilfe eine Redirects und der Übermittlung des korrekten Statuscodes an den Spider der die Website gerade durchforstet

Um zum Beispiel eine Seite mit der  URL alte_seite.htm auf neue-seite.htm umzuleiten, verwenden wir den folgenden Code:

RewriteRule ^alte_seite\.htm$ neue-seite.html  [R=301]
RewriteRule ^neue-seite\.htm$ script.php

Im obigen Beispiel erfolgt eine Weiterleitung, die URL wird ebenfalls geändert, und über den Status Code 301 wird ein Moved Permanently dem Spider mitgeteilt. Falls die interne Verarbeitung mit einem PHP-Script erfolgt, so wird der Request an die Datei script.php übergeben.

Eine Kontrolle kann durch das Betrachten des Apache Logfiles erfolgen. In der ersten Zeile erfolgt der Aufruf der URL alte_seite.htm. Dies erzeugt den gewünschten Code 301. In der zweiten Zeile erfolgt dann der eigentliche Redirect. Der mit einem Status Code 200 bearbeitet wird; die Anfrage wurde erfolgreich bearbeitet und das Ergebnis der Anfrage wird in der Antwort übertragen.

10.0.0.10 - - [29/Aug/2010:14:11:56] "GET /alte_seite.htm HTTP/1.1" 301 254
10.0.0.10 - - [29/Aug/2010:14:11:56] "GET /neue-seite.htm HTTP/1.1" 200 169

Weiterführende Informationen

Wer weiterführende Information und eine Menge an hilfreichen Beispielen sucht, der sollte sich unbedingt die Seite von modrewrite.de anschauen. Hier gibt es ein Forum in deutscher Sprache, mit einer Vielzahl an Beispielen aus der Praxis und bei Fragen wird in einem in der Regel rasch geholfen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

*