2009-09-29 8 views
7

verbieten, wie alle dynamischen URLs in robots.txtwie alle dynamischen urls robots.txt

Disallow: /?q=admin/ 
Disallow: /?q=aggregator/ 
Disallow: /?q=comment/reply/ 
Disallow: /?q=contact/ 
Disallow: /?q=logout/ 
Disallow: /?q=node/add/ 
Disallow: /?q=search/ 
Disallow: /?q=user/password/ 
Disallow: /?q=user/register/ 
Disallow: /?q=user/login/ 

ich alle Dinge nicht zulassen wollen nicht zulassen, die mit /? Q =

+0

Nach [dieser] (http://smackdown.blogsblogsblogs.com/2008/05/23/googlebot-creates-pages-instead-of-simply-indexing-them-new-form-crawling-algo-goes -bad /), Suchseiten zu verweigern kann eine wirklich gute Idee sein. Diese Frage ist also sehr relevant und sollte nicht geschlossen werden. –

Antwort

11

Die Antwort auf Ihre Frage ist

Disallow: /?q= 

Die beste (derzeit zugänglich) Quelle auf robots.txt zu verwenden, die ich auf Wikipedia finden konnte. (Die angeblich endgültige Quelle ist http://www.robotstxt.org, aber die Website ist im Moment down.)

Laut der Wikipedia-Seite definiert der Standard nur zwei Felder; UserAgent: und Disallow :. Das Disallow: -Feld erlaubt keine expliziten Wildcards, aber jeder "nicht erlaubte" Pfad ist eigentlich ein Pfadpräfix; d. h. Übereinstimmung mit einem beliebigen Pfad, der mit dem angegebenen Wert beginnt.

Das Feld Zulassen: ist eine nicht standardmäßige Erweiterung, und jegliche Unterstützung für explizite Platzhalter in Disallow wäre eine nicht standardmäßige Erweiterung. Wenn Sie diese verwenden, haben Sie kein Recht zu erwarten, dass ein (legitimer) Web-Crawler sie versteht.

Dies ist keine Frage von Crawlern, die "intelligent" oder "dumm" sind: es geht um die Einhaltung von Normen und die Interoperabilität. Zum Beispiel wäre jeder Web-Crawler, der "intelligente" Dinge mit expliziten Wildcard-Zeichen in einem "Disallow:" machte, schlecht für (hypothetische) robots.txt-Dateien, in denen diese Zeichen wörtlich interpretiert werden sollten.

+0

@stephen danke für die detaillierte Antwort – pmarreddy

+0

Ein hohes Ergebnis in Google zum Verständnis robotos.txt suggeriert, dass reguläre Ausdrücke funktionierten - ich fand sie nicht in der Lage, reguläre Ausdrücke zu verwenden. – landed

2

Wie Paulus sagte ein Start Viele robots.txt-Interpreter sind nicht zu hell und interpretieren möglicherweise Wildcards im Pfad nicht so, wie Sie sie verwenden möchten.

Das heißt, einige Crawler versuchen, dynamische Seiten von selbst zu überspringen, da sie befürchten, dass sie in Endlosschleifen auf Links mit unterschiedlichen URLs hängen bleiben könnten. Ich gehe davon aus, dass Sie diese Frage stellen, weil Sie einem mutigen Crawler gegenüberstehen, der sich bemüht, diese dynamischen Pfade zu erreichen.

Wenn Sie Probleme mit bestimmten Crawlern haben, können Sie versuchen, den Crawler genauer zu untersuchen, indem Sie die Kapazität von robots.txt durchsuchen und einen bestimmten robots.txt-Abschnitt dafür angeben.

Wenn Sie diesen Zugriff auf dynamische Seiten generell nicht zulassen möchten, sollten Sie Ihr robots.txt-Design überdenken.

In den meisten Fällen befinden sich die dynamischen Parameter "Seiten" in einem bestimmten Verzeichnis oder einem bestimmten Satz von Verzeichnissen. Deshalb ist es normalerweise sehr einfach, einfach zu verbieten:/cgi-bin oder/app und damit fertig zu werden.

In Ihrem Fall scheinen Sie die Wurzel einem Bereich zuzuordnen, der Parameter behandelt. Sie könnten die Logik der robots.txt umkehren wollen und etwas sagen wie:

User-agent: * 
Allow: /index.html 
Allow: /offices 
Allow: /static 
Disallow:/

Auf diese Weise Ihre Zulassungsliste Ihre Disallow Liste außer Kraft gesetzt werden, indem speziell Hinzufügen welchen Crawler sollte Index. Beachten Sie, dass nicht alle Crawler gleich erstellt werden. Möglicherweise möchten Sie diese robots.txt zu einem späteren Zeitpunkt verfeinern, indem Sie einen bestimmten Abschnitt für jeden Crawler hinzufügen, der sich noch nicht ordnungsgemäß verhält.

+1

@Grookoo: "Zulassen:" ist nicht Standard.Ein Crawler, der ihn ignoriert, verhält sich nicht falsch. es entspricht einfach der robots.txt-Spezifikation. –