Webseitenzugriff mit .htaccess verweigern!
Da ich schon seit Wochen von einem ganz fiesen Bot geplagt werde, der auch noch unnötigen viel Traffic verursacht, habe ich mich jetzt endlich dazu entschlossen, diesen Kamerad von meiner Homepage zu verbannen.
Dazu habe ich die .htaccess-Datei manipuliert, indem ich einen Code eingesetzt habe, der es mir ermöglicht hat, einzelne IPs und User-Agents zu sperren. Wie das funktioniert, möchte ich dir hier gerne erklären.
Wichtig: Das Apache Modul “mod_rewrite” muss auf deinem Webserver aktiviert sein, sonst geht das nicht.
Als Erstes benötigst du die .htaccess-Datei, die du in deinem Root-Verzeichnis auf deinem Webserver finden kannst. Du kopierst diese Datei per FTP von deinem Webserver auf deinen PC und öffnest diese nun mit einem Texteditor. Anschließend trägst du in die .htaccess-Datei den von dir gewünschten Code ein und kopierst diese wieder zurück auf den Webserver. Fertig!
Unten findest Du nun ein paar Beispiele, was man mit so einer manipulierten .htaccess-Datei alles Anstellen kann.
Einzelne IP und Domain sperren:
deny from 62.178.217.28
deny from .chello.at
Hier wird der Zugriff auf den Homepage-Bereich für die IP-Adresse “62.178.217.28″ und für jeden Host, der auf “.chello.at” endet, verboten.
Alle sperren und nur bestimmten IPs den Zugriff erlauben:
deny from all
allow from 89.58
In diesem Beispiel wird der Zugriff auf die Webseite nur den IP-Adressen erlaubt, die mit “89.58″ anfangen. Alles andere ist ausgesperrt!
Client (User-Agent) Sperre:
# betaBot den Zugriff verweigern
RewriteCond %{HTTP_USER_AGENT} ^betaBot
RewriteRule /* http://www.chello.at/ [L,R]
Hier wird der “betaBot” ausgesperrt. Sollte der “betaBot” auf diese Webseite zugreifen, so wird ihm das verwehrt und er wird auf eine vorher definierte Webseite umgeleitet. Mit dem Befehl „RewriteRule /* http://www.chello.at/ [L,R]“ leitest du den betroffenen Clienten, auf eine X-beliebige Webseite um. In diesem Fall wird “betaBot” auf seine eigene Webseite umgeleitet.
Betriebssystem sperren:
# Windows User-Agent den Zugriff verweigern
RewriteCond %{HTTP_USER_AGENT} ^Windows.*
RewriteRule ^.* – [F]
Mit dieser Client-Sperre wird der Seitenzugriff jedem User untersagt, der über einen Windows-Computer diese Homepage aufrufen möchte. Mit dem Befehl: „RewriteRule ^.* – [F]“ legst du fest, dass den ausgesperrten Besuchern eine Fehlerseite angezeigt wird, sobald diese, eine für sie gesperrte Seite aufrufen.
Verschiedene User-Agents gleichzeitig sperren:
# Mehrere Spambots nach User-Agent aussperren
RewriteCond %{HTTP_USER_AGENT} ^.*Bot1 [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Bot2 [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Bot3 [OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Bot4
RewriteRule ^.* – [F]
Hier werden mehrere User-Agents auf einmal gesperrt. Diese Liste lässt sich beliebig erweitern.
- Geschrieben am: 25. September 2011
- Kategorie: Webmaster
- Stichwörter: .htaccess, Bot, IP, User-Agent
- Trackback-Adresse: http://joachimnadolny.de/webseitenzugriff-mit-htaccess-verweigern/trackback/
- Möchtest Du einen Kommentar abgeben oder Kommentare per RSS verfolgen?
Vielen Dank hierfür, war (fast) genau was ich gesucht habe.
Ich habe bis auf meine eigenen IP´s alle ausgesperrt, jetzt würde ich alle ausgesperrten noch gerne per 301 auf eine andere Seite umleiten… Mal schaun ob ich das hinbekomme…
Hast du vielleicht eine Lösung parat?
Liebe Grüße,
Pascal
Hi Pascal,
ich habe leider keinen passenden Lösungsvorschlag parat. Ich verstehe auch nicht wirklich, warum du deine Hauptdomain mit einer IP-Sperre versiehst, anstatt alle Besucher grundsätzlich per 301 Redirect auf eine andere Domain weiterzuleiten. Wie man das anstellt, kannst du hier nachlesen http://joachimnadolny.de/301-redirect-suchmaschinenfreundliche-weiterleitung/
Oder du richtest eine IP-Sperre ein (wie bereits geschehen) aber leitest die gesperrten Besucher mit dem Befehl
RewriteRule ^.* – [F]auf eine interne Fehlerseite um.Möchtest du eventuell nur bestimmte Ordner oder Dateien sperren, dann kannst du auch einen Verzeichnisschutz einrichten. Oder du manipulierst die .htaccess-Datei dahin gehend, sodass ein Aufrufen von Dateien, Seiten oder Ordner verhindert wird.
Beispiel:
#TEST.php sperren
< *files TEST.php>
order deny,allow
deny from all
< */files>
Die beiden Sternchen bitte heraus löschen!
Naja das ist halt ein Sonderfall,
ich möchte dort für mein Gewerbe eine Seite einrichten aber bis auf weiteres blockiert halten da ich mit einem Freund eine GbR habe. Also soll solange die GbR besteht die Seite auf die Seite der GbR umleiten sofern man nicht von einem meiner Rechner darauf surft.
Lässt sich natürlich wie du bereits sagtest per 301 durchaus umsetzen allerdings fände ich es eleganter wenn ich ganz normal darauf zugreifen könnte.
Ist vielleicht auch unsinnig aber so kam mir das halt in den Kopf :)
Pascal ich glaube ich habe eine Lösung für dich.
Probiere es mal aus und füge unten stehen Code in deine .htaccess-Datei ein:
RewriteEngine onRewriteCond %{REMOTE_ADDR} !=12.34.56.78
RewriteRule ^(.*)$ http://domain.tld [R=302,NC,L]
12.34.56.78 = Die IP-Adresse, die Zugriff haben soll
http://domain.tld = Die Domain, auf die Weitergeleitet werden soll
Benutze hierfür besser keine 301 Redirect, sondern lieber eine tempöräre 302-Weiterleitung.
Funktioniert wie gewünscht!
Vielen vielen Dank!
Es freut mich, dass ich dir weiterhelfen konnte. Auch ich habe bei der Suche nach einer Lösung wieder etwas dazu gelernt ;-)