Seite 1 von 1

Verfasst: 21.02.2005, 17:05
von Sebastian
Hallo,

das ist zwar kein .htaccess-Thread aber ich habe eine Frage zu folgendem Code:

RewriteCond %{HTTP_USER_AGENT} ^8484/ Boston/ Project/ v/ 1/.0 [OR]
RewriteCond %{HTTP_USER_AGENT} ^Alexibot [OR]
RewriteCond %{HTTP_USER_AGENT} ^Art/-Online
RewriteRule ^.* - [F]

Ich will bestimmte Bots ausschließen von meinen Seiten. Die erste Zeile funktioniert nicht, die restlichen ja. Mit der ersten Zeile dabei erscheint nur Fehler. Wie gibt man Strings ein? Der erste String soll "8484 Boston Projekt v 1.0" heißen. Der Slash steht für ein folgendes Sonderzeichen. Bei welchen Zeichen braucht es den? Zahlen, Leerzeichen, Punkte usw? Warum kommt dann aber immer noch ein Fehler mit der Zeile?

Ich habe noch eine Frage. Gibt es Platzhalter so wie * und ? in Dos? Wäre für manche Emailsammler gut, die die Meldestrings verändern um nicht erkannt zu werden aber trotzdem manche Teile eindeutig bleiben.

Kann jemand helfen zu den Fragen? Wo liegt der Fehler, wo braucht es den Slash und was gibt es für Platzhalter in Strings.

Grüße,
Sebastian

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Standard-Domain definieren

Verfasst: 21.02.2005, 17:12
von bull
\ statt / , dann sollte es gehen

wenn nur Teile gleich sind : einfach auf ^ und/oder $ verzichten, dann gilt die RewriteCond auch dann, wenn der Teilstring irgendwo im User-agent vorkommt.

Verfasst: 21.02.2005, 17:36
von Sebastian
Damit funktioniert es.

Die Frage ist, bei welchen Zeichen muß man diesen Backslash benutzen? Scheinbar mindestens bei Punkten und Leerzeichen. Wobei noch?

Wie ist das mit den Platzhaltern? ^bedeutet daß man vom Anfang des Strings anfängt und $ bedeutet das Ende, ja? Was mache ich bei diesem Spider:

Zeus 11389 Webster Pro V2.9 Win32 Bei ihm ist die Zahl nach Zeus immer unterschiedlich. Ich habe also mehrere feste Teile. Wie schreibe ich die in einer Condition?

Grüße,
Sebastian

Robots mit .htaccess ausschließen - Problem

Verfasst: 21.02.2005, 17:39
von bull
Backslash
weiß ich gerade nicht auswendig, warten bis unser Forumsmitglied Caterham vorbeischaut :)
Zeus 11389 Webster Pro V2.9
einfach
^Zeus [OR]
und gut ist's

Verfasst: 21.02.2005, 18:02
von Sebastian
Damit würde ich aber auch alle anderen Zugriffe ausschließen die mit Zeus anfangen. Ich würde das gern so weit wie möglich einschränken.

Grüße,
Sebastian

Robots mit .htaccess ausschließen - Problem

Verfasst: 22.02.2005, 09:06
von bull
Vielleicht

RewriteCond %{HTTP_USER_AGENT} ^Zeus\ ([0-9]*)\ Webster\ Pro\ V[0-9]\.[0-9]

= Zeus + irgendeine Zahl + Webster Pro V + irgendeine Versionsnummer

Verfasst: 22.02.2005, 13:33
von robo
Sebastian hat geschrieben:Die Frage ist, bei welchen Zeichen muß man diesen Backslash benutzen? Scheinbar mindestens bei Punkten und Leerzeichen. Wobei noch?
Bei Leerzeichen und allen Zeichen, die in einem Regulären Ausdruck eine besondere Bedeutung haben, wie z. B. \.+*?()[]{}^$ (hmm, hab ich was vergessen?)
Sebastian hat geschrieben:Wie ist das mit den Platzhaltern? ^bedeutet daß man vom Anfang des Strings anfängt und $ bedeutet das Ende, ja? Was mache ich bei diesem Spider:

Zeus 11389 Webster Pro V2.9 Win32 Bei ihm ist die Zahl nach Zeus immer unterschiedlich. Ich habe also mehrere feste Teile. Wie schreibe ich die in einer Condition?
Mein Vorschlag:
^Zeus\ \d+\ Webster\ Pro

cu, Robo :)

Verfasst: 22.02.2005, 14:42
von Sebastian
Danke! Ich probier das mal.

Gibt es eigentlich eine gute Seite wo man die Syntax von .htaccess insbesondere solche Stringsachen usw leicht lernen kann?

Grüße,
Sebastian

Verfasst: 22.02.2005, 16:26
von Sebastian
Steht das d+ für eine beliebige Anzahl von Zeichen oder Zahlen? Warum wird es mit einem Backslash eingeleitet? Der zeigt doch an, daß das nächste Zeichen als String, nicht als Befehl interpretiert werden soll oder?

Ich habe jetzt in anderen Listen manchmal Punkt und Stern gefunden. Die beide nicht Teil des Strings sind. Steht Punkt-Stern für eine beliebige Anzahl Zeichen? Wenn man kein $ angibt wird dann auch alles gefiltert wenn nach dem Text noch andere Zeichen kommen?

Grüße,
Sebastian

Verfasst: 22.02.2005, 17:44
von robo
Sebastian hat geschrieben:Steht das d+ für eine beliebige Anzahl von Zeichen oder Zahlen?
\d ist eine Zeichenklasse und steht für digit, also eine Ziffer. + ist ein Quantifier und bedeutet 1 bis viele.
Sebastian hat geschrieben:Warum wird es mit einem Backslash eingeleitet?
Weil es sonst d bedeuten würde. :-)
Sebastian hat geschrieben:Der zeigt doch an, daß das nächste Zeichen als String, nicht als Befehl interpretiert werden soll oder?
Nö, das kommt ganz darauf an, was auf den Backslash folgt. :-)
Backslashes leiten Escape-Sequenzen, Zeichenklassen und Anker ein. Ausserdem schützen sie ein nachfolgendes Metazeichen.
Sebastian hat geschrieben:Ich habe jetzt in anderen Listen manchmal Punkt und Stern gefunden. Die beide nicht Teil des Strings sind. Steht Punkt-Stern für eine beliebige Anzahl Zeichen?
Der Punkt steht für ein beliebiges Zeichen und der Stern ist wieder ein Quantifier und bedeutet 0 bis viele.

.* bedeutet also: beliebiges Zeichen, beliebige Anzahl (auch 0)

.+ bedeutet übrigens: beliebiges Zeichen, einmal oder öfter

. bedeutet: genau ein beliebiges Zeichen

.? bedeutet: beliebiges Zeichen, null- oder einmal

\. bedeutet: Punkt :-)
Sebastian hat geschrieben:Wenn man kein $ angibt wird dann auch alles gefiltert wenn nach dem Text noch andere Zeichen kommen?
Korrekt.

cu, Robo :)

Verfasst: 23.02.2005, 02:00
von Sebastian
Danke für die Erklärung!

Grüße,
Sebastian