toscho.design

Ungebetene Gäste mit .htaccess blocken

Ich freue mich über jeden Besucher. Naja, über fast jeden. Mancher Besucher ist bloß eine Software auf der Suche nach Sicherheitslücken oder E-Mail-Adressen. Über die freue ich mich nicht so sehr.

Einige Kunden haben bei mir einen Pflegevertrag. Das bedeutet neben vielen anderen Dingen: Ich sehe mir monatlich ihre Logfiles an, suche nach Irrläufern wie oben genannter Software – und aktualisiere ihre Blockliste, damit sie nicht für Traffic bezahlen, den sie gar nicht brauchen. Spaß macht das nicht gerade, aber es gehört einfach zu einer vernünftig betriebenen Webseite.

Ich versperre der Schadsoftware nicht einfach den Zugriff, sondern ich schicke sie nach Hause. Das ist zwar nicht ganz standardkonform – korrekt wäre der Header 403 (Forbidden) samt Texthinweis – aber der Redirect spart ein paar Bytes Traffic und führt zum gleichen Ziel.

Dazu schreibe ich in die .htaccess – eine Steuerungsdatei für den Webserver Apache – folgende Liste:

RewriteEngine On
#Blocklist start
RewriteCond %{HTTP_REFERER} iaea\.org  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} adressendeutschland [NC,OR]
RewriteCond %{HTTP_USER_AGENT} anarchie  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Atomz  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} BackWeb [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Bandit [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Buddy [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Bullseye [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Cherry [NC,OR]
RewriteCond %{HTTP_USER_AGENT} copier [NC,OR]
RewriteCond %{HTTP_USER_AGENT} crescent  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} DigExt [NC,OR]
RewriteCond %{HTTP_USER_AGENT} DISCo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} download [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Drip [NC,OR]
RewriteCond %{HTTP_USER_AGENT} DTS\ Agent  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} e?mail.?(collector|magnet|sweeper|harvest|collect|wolf) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} EasyDL/\d\.\d+  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} eCatch [NC,OR]
RewriteCond %{HTTP_USER_AGENT} efp@gmx\.net  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} express  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} extractor  [NC,OR]
# Siehe http://www.cre8asiteforums.com/forums/index.php?showtopic=30611
RewriteCond %{HTTP_USER_AGENT} Fetch\ API\ Request [NC,OR]
RewriteCond %{HTTP_USER_AGENT} FileHound [NC,OR]
RewriteCond %{HTTP_USER_AGENT} flash [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} FlickBot  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} FrontPage  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} getright [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Go-Ahead-Got-It [NC,OR]
RewriteCond %{HTTP_USER_AGENT} go.?zilla [NC,OR]
RewriteCond %{HTTP_USER_AGENT} gotit [NC,OR]
RewriteCond %{HTTP_USER_AGENT} grabber [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Grafula [NC,OR]
RewriteCond %{HTTP_USER_AGENT} HMView [NC,OR]
RewriteCond %{HTTP_USER_AGENT} httrack [NC,OR]
RewriteCond %{HTTP_USER_AGENT} IBrowse [NC,OR]
RewriteCond %{HTTP_USER_AGENT} imagefetch  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Indy\ Library [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} InterGET [NC,OR]
RewriteCond %{HTTP_USER_AGENT} JetCar [NC,OR]
RewriteCond %{HTTP_USER_AGENT} JoBo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} JustView [NC,OR]
RewriteCond %{HTTP_USER_AGENT} LINKS\ ARoMATIZED  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} mister\ pix [NC,OR]
RewriteCond %{HTTP_USER_AGENT} net.?(ants|mechanic|spider|vampire|zip) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} nicerspro [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ninja [NC,OR]
RewriteCond %{HTTP_USER_AGENT} NPBot  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} offline  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} PersonaPilot  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} reaper  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Shelob [NC,OR]
RewriteCond %{HTTP_USER_AGENT} siphon [NC,OR]
RewriteCond %{HTTP_USER_AGENT} snagger [NC,OR]
RewriteCond %{HTTP_USER_AGENT} Sqworm  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} SurveyBot  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} tele(port|soft)  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} TurnitinBot [NC,OR]  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} vayala  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} whacker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} zeus [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Ants [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^attach [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^black [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Bot\ mailto:craftbot@yahoo\.com [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^china [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Collector [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Crawler [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Crescent [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Custo [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^DA\ \d\.\d+  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^DISCo [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^eCatch [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Express\ WebPictures [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Extractor [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^EyeNetIE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^fast [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Frontpage [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^GetRight [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Gets [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^GetWeb [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Go-Ahead-Got-It [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Gra(b|fula) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^HMView [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^IE\ \d\.\d\ Compatible.*Browser$  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Image\ (Stripper|Sucker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Indy [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^InterGET [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Internet\ Ninja [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Iria [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^JetCar [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^JOC [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^larbin [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^leech [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^lftp [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^likse [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^lwp-trivial [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mag-Net [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Magnet [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mass\ Downloader [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Memo [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft\ URL\ Control  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^MIDown [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Mirror [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Mister [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^MSFrontpage [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Navroad [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^near [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Net(Ants|Spider|ZIP) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Net\ Vampire [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^NG  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^nice [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Ninja [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Octopus [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Offline [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Papa [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^pavuk [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^pcBrowser [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Pockey [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Pump [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^PureSight [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^RealDownload [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Recorder [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^ReGet [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SiteSnagger [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Smart [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Snagger [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Snake [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SpaceBison [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Stripper [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Sucker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperBot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^SuperHTTP [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Surf [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^tAkeOut [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Teleport [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^TV33 [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Vacuum [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^VoidEYE [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Voil [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Web(Auto|Copier|Fetch|Go|Leacher|Reaper|Sauger|Stripper|ZIP) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Website\ (eXtractor|Quester) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Web\ Image\ Collector [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Web\ Sucker [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Wget [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^Widow [NC,OR] 
RewriteCond %{HTTP_USER_AGENT} ^Xaldon [NC,OR]
# Crackversuche aus Tschechien
RewriteCond %{REMOTE_ADDR} ^78.24.8. [NC,OR]
# XSS-Versuche
RewriteCond %{REQUEST_URI} ^.*=http.*$ [NC,OR]
RewriteCond %{REQUEST_URI} ^.*mosConfig.*$ [NC,OR]
RewriteCond %{THE_REQUEST} ^/.*/formmail\.(pl|cgi)  [NC]
#Blocklist end
RewriteRule ^.* http://localhost [L,R=301]

Vorsicht! Diese Liste blockiert vielleicht Zugriffe, die du auf deiner Seite gerne zulassen möchtest. Also erst nachdenken, dann übernehmen – oder eben nicht.

Da eine richtige .htaccess oft noch eine Menge anderer Einträge hat (für schöne URLs und Zeichenkodierung beispielsweise) und bei jedem Zugriff ausgewertet wird, muß man sehr genau prüfen, ob und wie sehr das die regulären Zugriffe ausbremst.

Siehe auch: Angriffe sehen und blockieren.

Mehr Lektüre zum Thema

24 Kommentare

  1. GwenDragon am 10.03.2009 · 12:21

    Ich verwende auch eine .htaccess, um Suchmaschinen, die sich nicht an die Regeln halten, auf eine Strafseite umzuleiten.

    Es gibt nämlich so einige, die sich nicht an die robots.txt oder an Cache-verbote halten oder völlig Redirects ignorieren und uralte Inhalte (trotz Redirect) abgrasen.

    Ein solch abgestraftes Ungeziefer ist z. B. Yahoos Spider.

  2. Thomas Scholz am 10.03.2009 · 12:34

    Stimmt, Yahoo ist ein extremer Fall. Man kann ihn nicht ganz ausperren, aber seine 404-Tests auf URLs mit »SlurpConfirm« können schonmal die ganze Nacht dauern. Ich setze mich in den nächsten Tagen mal an ein 404-Script, das diese und ähnliche Fälle besser behandelt.

    Die robots.txt benutze ich auch als Spamfalle: Ich verbiete darin ein Verzeichnis, das gar nicht existiert. Wer dann darauf zugreift, mißachtet die Angaben vorsätzlich – und hat gute Chancen, in die Blockliste aufgenommen zu werden. Muß man natürlich vorher recherchieren.

    Mich ärgert auch immer wieder, daß die meisten Suchmaschinen 404 (nicht gefunden) nicht von 410 (für immer weg) unterscheiden können. Selbst Google scheitert hier kläglich. Damit muß man wohl leben.

  3. Siegfried am 10.03.2009 · 15:57

    Danke für die Liste, ich werde mich da mal mit befassen.

    Eine Robots.txt habe ich auch. Zu verschiedenen Zwecken. U.A. ist da ein Verbot auf ein allerdings existierendes Verzeichnis drin. Dort gibt es auch eine schöne html-Seite zum e-mails abgrasen. Nur, dass die Adressen nicht existieren. Und dort gibt es viele schöne Links auf existierende Webseiten im gleichen Verzeichnis. Diese enthalten wieder nicht existierende e-mail Adressen und links auf die anderen Webseiten in diesem Verzeichnis. Ein unanständiger Robot landet so in einer Endlosschleife.

    Zur Zeit habe ich es aus Platzgründen ein Bisschen entschärft, aer das ist mit einem Knopfdruck wieder full-featured :)

    Was mir etwas Sorgen macht, sind diese Hackversuche aus XY-Land. Ob man damit nicht auch legitime Zugriffe blockt?

  4. Thomas Scholz am 10.03.2009 · 16:08

    @Siegfried: Den Dreh mit nicht exisitierenden E-Mail-Adressen finde ich ein bißchen gefährlich. Irgendwann sind gute Domainnamen alle, dann gibt es vielleicht jemanden, der eben doch eine E-Mail-Adresse hat, die du für unwahrscheinlich hältst.

    Die Sperre einzelner IP-Adressen oder ganzer Bereiche muß man sich gut überlegen, da hast du vollkommen recht. Ich blockiere tatsächlich auch eine Menge mehr; aber jeden einzelnen Eintrag habe ich vorher gut recherchiert. Und ich habe immer einen guten Grund – meistens besonders aggressive Versuche, sich in eine Website einzuhacken.

  5. Siegfried am 10.03.2009 · 16:46

    Die fake-Adressen bei mir sind alle von meiner Domain :)

    Was mich noch wundert: Sind denn tatsächlich die meisten Bots unter ihrem eigenen Namen unterwegs? Also, wenn ich einen kriminellen Bot loscrawlern lassen würde, würde ich ihm die Kennung des derzeitigen Mainstream-IE verpassen.

  6. Thomas Scholz am 10.03.2009 · 16:57

    Ja, viele Bots geben sich als IE aus. Die versauen nicht nur die Statistik; sie sind auch per Blockliste kaum zu erfassen. Man erkennt die schlecht programmierten im Logfile meist daran, daß sie die ganze Website binnen weniger Sekunden abgrasen, die Stylesheets, Bilder und Scripte aber nicht laden.
    Wenn es mir zu bunt wird, prüfe ich auch da die IP-Adresse, aber normalerweise rutschen sie leider unerkannt durch.

  7. Siegfried am 13.03.2009 · 08:32

    Ich denke mal, ich werde Bots weiterhin _nicht_ sperren. Erstens bringt das gerade bei den schlimmsten Bots Nichts, da diese sich i.d.R. wohl eher tarnen, und zweitens gibt es durchaus auch legitime Bots.

    Ich bleibe bei meiner Falle für unanständige Bots. Das hat den Vorteil, eben diese Bots erheblich zu behindern, aber legitime Bots, die sich schlicht an die von mir vorgegebenen Regeln halten, nicht zu behindern. Für einzelne Bots ist die Blockade zwar nicht so wirksam wie Deine Methode, aber dafür behindert das jeden denkbaren und auch zukünftig denkbaren Bot etwa gleich. Und es belastet den Server nicht. Immerhin muss so eine lange Liste bei jedem einzelnen HTTP Request wieder überprüft werden.

    Trotzdem ist die Liste gut. Ich speichere mir das mal als Technologiestudie, in der Hoffnung, daraus irgendwann mal was basteln zu können :)

  8. Dieter am 25.04.2009 · 09:59

    Klingt interessant und würde ich gerne mal in meiner .htaccess-Datei ausprobieren.

    Ich setze aber schon The Perishable Press 4G Blacklist ein (siehe http://perishablepress.com/press/2009/03/16/the-perishable-press-4g-blacklist/ ).

    Gibt es da etwas zu beachten, wenn man beide Listen gemeinsam einsetzen will (Reihenfolge etc)?

  9. Thomas Scholz am 25.04.2009 · 10:14

    @Dieter: Ja, die Liste kenne ich. Jeff Starr werkelt ja schon lange mit Blocklisten herum – auf jeden Fall interessante Lektüre, auch die früheren Artikel mit den deutlich umfangreicheren Listen.

    Options All würde ich nicht setzen, weil das je nach Serverkonfiguration sehr unterschiedliche Ergebnisse produziert. Sicherer ist das gezielte Anschalten einzelner Optionen.

    Ein weiterer Unterschied besteht in der Antwort an die unerwünschten Besucher: Ich leite sie um, Starr sendet einen Header 403. Wenn dafür keine extra schlanke Fehlerseite festgelegt wurde, kostet das deutlich mehr Traffic als meine Methode. Sein Beispiel mit »1629 attacks in 90 minutes« deutet schon den Größenunterschied an.

    Ansonsten: Schreib die Listen nicht untereinander, sondern fasse die Rewrite-Regeln zu einer zusammen. Die Blockade einzelner IP-Adressen im Block Order Allow,Deny sollte ganz oben stehen, vor allen anderen, damit der Server nicht erst die spezielle Konfiguration einlesen muß, wenn er den Besucher doch wegschickt.

    Ich werde innerhalb der nächsten zwei Wochen einen Folge-Artikel zu diesem schreiben, in dem ich auf solche Details nochmal eingehe.

  10. Dieter am 25.04.2009 · 11:13

    @Thomas Scholz:
    Herzlichen Dank für Deine ausführliche Erläuterungen.
    Es fehlen mir halt schlicht noch Kenntnisse in PHP, Apache und htaccess. Da frage ich dann lieber mal nach.

    Freue mich auf Deinen avisierten Folge-Artikel und schon mal ein herzliches Dankeschön dafür bereits im voraus.

  11. Joachim am 11.05.2009 · 12:13

    Vielen Dank für den Beitrag. Wenn man eine "saubere" Webseite haben will, ist dies absolut hilfreich!

    Danke
    Joachim

  12. Tagesgeldkonten am 06.06.2009 · 02:08

    Hallo Thomas, danke, der Beitrag hat mir wirklich weitergeholfen! Bewirkt dieser Eintrag:

    RewriteCond %{REQUEST_URI} ^.*=http.*$ [NC,OR]

    dass Aufrufe geblockt werden, wenn http-Elemente hinter der eigentlichen URL aufgerufen werden? Wenn ich das richtig verstehe, sollen bspw. seiteninterne Suchanfragen geblockt, die "http" beinhalten.

    Hast Du eigentlich Probleme bei großen .htaccess-Dateien? Meine ist mit ca. 1.000 geblockten Proxy-IP Adressen knapp 25 Kbytes groß, bisher ohne gefühlte Performance-Probleme, aber so ganz sicher bin ich mir da nicht. Viele Grüße, Felix

  13. Thomas Scholz am 06.06.2009 · 02:36

    @Felix: Du hast genau den Eintrag herausgepickt, den ich inzwischen überarbeitet habe. Statt dessen schreibe ich jetzt:

    RewriteCond %{QUERY_STRING} (ftp|http|https)\: [NC,OR]

    Die Größe der Datei hat kaum Einfluß auf die Performance (wenn sie nicht gerade auf einem Windows-System liegt und fragmentiert ist); relevanter ist der Aufwand einzelner Aktionen.
    Ein deny from kostet fast nichts, ein Regex auf einzelner Request-Header ist schon teurer, und ein Rewrite umso mehr, weil hier der Server prüfen muß, ob die Zieldatei existiert. Gerade die Rewrite-Regeln sollte man also zunächst auf einem Testsystem ausprobieren – mit einem ausführlichen Rewrite-Log. Da sieht man dann schnell, wo man noch optimieren kann.

    Deshalb sollten Deny-Regeln auch ganz oben stehen: Trifft eine zu, wird der Rest der .htaccess nicht mehr abgearbeitet. Danach kommen die Rewrite-Regeln zum Blocken und erst dann der Code für die willkommenen Besucher.

    Irgendwann kommt hierzu der Nachfolgeartikel; leider habe ich im Moment überhaupt keine Zeit.

  14. GwenDragon am 06.06.2009 · 16:45

    @Thomas Scholz:
    Ob vielleicht das Regex bei

    RewriteCond %{QUERY_STRING} (ftp|https?)\: [NC,OR]

    performanter ist?

  15. Thomas Scholz am 06.06.2009 · 21:55

    @GwenDragon: Da wird kein Unterschied bestehen. Ich tendiere bei regulären Ausdrücken immer zu der Variante mit weniger Metazeichen, aber das ist einfach eine Geschmacksfrage.

  16. andreas am 21.07.2009 · 11:51

    bei mir sieht ein Eintrag so aus:

    RewriteCond %{HTTP_USER_AGENT} ^Shelob [OR]

    Ich habe keine Ahnung von diesen Befehlen. Gibts bei meiner Variante, die ich auch nur igrendwo übernommen habe, einen Nachteil?

    Besten Dank, Andreas

  17. Thomas Scholz am 21.07.2009 · 15:05

    @andreas: So groß ist der Unterschied nicht. Deine Regel erfaßt nur weniger Fälle als mein:

    RewriteCond %{HTTP_USER_AGENT} Shelob [NC,OR]

    Bei dir muß die UA-Kennung exakt mit Shelob beginnen; ich erwische auch shelob (das NC steht für NoCase, ignoriert also die genaue Großschreibung) und _shelob (dein ^ sucht nur ganz am Anfang).

  18. andreas am 22.07.2009 · 00:09

    @Thomas, dann werde ich meine .htacces mal wieder ändern bzw. diese Variante übernehmen.

    Gruß, Andreas

  19. stoemagics am 17.08.2009 · 01:23

    Hallo Thomas,
    ich treibe mich ja gerne mal auf deiner Webseite herum und möchte mich einfach einmal für diesen tollen Beitrag bei Dir bedanken! Hat mir sehr geholfen.

    Liebe Grüße, Manuela.

  20. Micha am 09.02.2010 · 07:56

    Hallo Thomas,

    ich habe mal eine Frage: Ich möchte alle Bots, die auf ein bestimmtes Verzeichnis und dessen Dateien zugreifen wollen, auf den localhost umleiten. Ich komme nur nicht ganz mit der Condition klar

    RewriteCond %{REQUEST_URI} ^.*/verzeichnis/*$ [NC,OR]

    funktioniert nicht.

  21. Thomas Scholz am 09.02.2010 · 09:29

    @Micha: Dein Regex sieht ein bißchen ungewollt aus, besonders der Schluß.

    Ganz einfach geht es so:

    RewriteCond %{REQUEST_URI} ^/kompletter/pfad/zum/verzeichnis [NC,OR]

    Da hinten kein $ steht, werden auch die Zugriffe auf darunter liegende Dateien erfaßt.

  22. Micha am 09.02.2010 · 13:56

    Danke Thomas. Und wenn ich

    RewriteCond %{REQUEST_URI} ^/verzeichnis [NC,OR]

    schreibe, werden dann auch alle Unterverzeichnisse inkl. der dort enthaltenen Dateien erfasst? Oder muss ich jedes Verzeichnis einzeln angeben?

  23. Thomas Scholz am 09.02.2010 · 14:04

    @Micha: Ja, genau. Probier’ es einfach mal aus. Zum Lernen empfehle ich dir den Regex-Coach. Der liefert zu einem regulären Ausdruck auch eine Klartextanalyse, die das Herumraten deutlich verkürzt.

  24. Micha am 09.02.2010 · 17:21

    Super. Ich danke dir. Damit kann ich erstmal üben, ohne was kaputt zu machen.