Praktische Anwendungen von URL rewrite

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

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
Interessante Artikel zum Thema:
  1. URL rewrite oder unsere Adresse soll schöner werden
  2. Absichern und Sichern einer Joomla Installation
  3. Splash Seite unter Joomla einrichten
  4. Einen Virtual Host unter Apache einrichten
This entry was posted in allgemein and tagged , , , . Bookmark the permalink.  | Drucken

Hinterlasse eine Antwort

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

*


*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>