modrewrite in der .htaccess

Hinweis: Dieser Artikel ist älter als zwei Jahre (letzte Änderung: 20. September 2012) und evtl. nicht mehr aktuell.

Viele Leute fragen immer:
wie verbiete ich über die .htaccess den Zugriff auf bestimmte Dinge?
wie geht das eigentlich mit den Weiterleitungen von Domains über die .htaccess?

Einige .htaccess Regeln hatten wir schon mal in unserem Sicherheits-Artikel angerissen. Heute gehen wir noch mal genauer auf die .htaccess und die modrewrite-Regeln ein.

Zu aller erst müssen wir das Modul Rewrite aktivieren:

RewriteEngine on

Kommen wir jetzt noch mal zum Beispiel „Bilder-Klau“. Dabei wollen wir unseren Traffic so gering wie möglich halten und externe Zugriffe auf unsere Bilder verbieten. Weiter noch, wir geben sogar einen netten Error-Hinweis aus ;-) Wir basteln uns also einfach mal eine Blacklist für alle Domains, die nicht unsere Bilder einbinden dürfen:

### Bilder-Klau Blacklist-Methode
RewriteCond %{HTTP_REFERER} ioff.de [NC,OR]
RewriteCond %{HTTP_REFERER} tutorialsblogs.com [NC,OR]
RewriteCond %{HTTP_REFERER} ringrocker.com [NC,OR]
RewriteCond %{HTTP_REFERER} freeblueprints.net [NC,OR]
RewriteCond %{HTTP_REFERER} vebidoo.de
RewriteCond %{REQUEST_URI} !/error.jpg
RewriteRule .*.(png|jpg|gif|svg|bmp)$ https://im-tal.net/forbidden/error.jpg [L]

Mit RewriteCond bestimmen wir die Wenn-Bedingung. Also, wenn der Referer „xyz“ ist,
… und jetzt kommen wir zur auszuführenden Regel -> RewriteRule …
dann zeige für die Dateitypen png, jpg, gif, svg und bmp unsere Error-Grafik an. Natürlich dürfen wir dann unsere Error-Grafik selber NICHT (-> ergibt sich aus dem !) verbieten ;-)

Was bedeutet [NC], [OR] und [L]? NC steht für no case und gibt an, dass zwischen Groß- und Kleinschreibung nicht unterschieden werden soll. OR verknüpft die Bedingungen mit einem Oder. Und das L steht für Last, die letzte Regel die auszuführen ist. Sprich wenn die Bedingung erfüllt ist, führe nur die Regel aus und schau die .htaccess nicht weiter durch.

Um das Prinzip zu verdeutlichen, basteln wir uns jetzt mal eine Whitelist für alle Domains, die auf unsere Dateitypen extern zugreifen dürfen, diesmal ohne Error-Grafik:

# Bilder-Klau Whitelist-Methode
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www.)?im-tal.net(/.*)?$ [NC,OR]
#RewriteCond %{HTTP_REFERER} !^https://([^./]*.)*facebook.com(/.*)?$ [NC,OR]
#RewriteCond %{HTTP_REFERER} !^http://([^./]*.)*facebook.com(/.*)?$ [NC,OR]
RewriteCond %{HTTP_REFERER} !^http://(www.)?images.google.de(/.*)?$ [NC]
RewriteRule .(gif|jpg|png|pdf|zip|GIF|JPG|PNG|PDF|ZIP)$ - [F]

Wenn der Referer NICHT (!) www.im-tal.net, Facebook oder der Google-Image-Server ist,
dann gib uns für die angegebenen Dateitypen eine 403 Forbidden-Seite [F] aus.

Selbstverständlich ist eine Kombi aus Blacklist und Whitelist Unsinn, entweder man erlaubt oder man verbietet.

Kommen wir nun zur Weiterleitung über die .htaccess. Es gibt 2 Arten einer Weiterleitung, entweder nur temporär (302) oder dauerhaft (301). Ob 301 oder 302 ist wichtig, z.B. für Google. Mal zwei Beispiele:
Redirect 301 / http://www.example.com/
Redirect 302 /login/ http://www.example.com/folder/

Wenn wir jetzt eine Domain / einen Ordner dauerhaft umleiten wollen, schreiben wir ein Redirect 301 auf die neue Adresse in die .htaccess der alten Domain.
Wenn wir eine Domain / einen Ordner nur temporär umleiten wollen, schreiben wir einen Redirect 302 auf die neue Adresse in die .htaccess der alten Domain.

Das war schon der ganze Zauber.

Empfehle uns: email facebook google plus twitter

Artikel Informationen

Hinterlasse einen Kommentar

  Abonnieren  
Benachrichtige mich zu: