noindex, follow für das WordPress Suchresultet

Das Webmaster Help Center von Google empfiehlt, die Suchresultate der Website aus dem index zu nehmen, sie sollten nicht gecrawlt werden, da sie keinen wirklichen Wert für den Besucher haben.

Mit der robots.txt-Datei können Sie verhindern, dass Suchergebnisseiten und andere automatisch erstellte Seiten, die keinen wirklichen Wert für Besucher haben, die über eine Suchmaschine auf Ihre Website geleitet wurden, gecrawlt werden.

Richtlinien für Webmaster

WordPress macht dies im Standard nicht. Allerdings kann das Theme schnell mit wenigen Handgriffen dafür optimiert werden, denn dazu stehen die Conditional-Tags zur Verfügung.

Einfach im head, in der Regel in der header.php zu finden, den folgenden Syntax unterbringen. Dazu den Eintrag meta name="robots" löschen und ersetzen.


<?php if (is_search()) { ?>

<?php } else { ?>

<?php } ?>

Update

Alternativ kann man mit Hilfe der Conditional-Tags anders abfragen. Die obige Lösung sollte auch nur ein Beispiel sein. Thorsten sendet mir gleich seine Version, die ich Euch nicht vorenthalten möchte. Mit Hilfe dieser Lösung wird gleichzeitig das Problem doppelter Content ausgeschlossen.


<?php if(is_home() || is_single() || is_page() ) { 
echo "";
} else {
echo "";
} ?>

Update 2

So langsam wird aus der Vorlage zum Nachdenken eine Komplettlösung. Micha sendet mir eine weitere Lösung die das Problem der "wahren" Startseite einbezieht und so das Codeschnippselchen kompletiert.


<?php if ( ( is_home() && !is_paged() ) || is_single() || is_page() ) {
echo '';
} else {
echo '';
} ?>

Update 3

Es geht weiter mit einer ganzen Reihe von Lösungen. Hierbei ist zu erwähnen, dass es nun ein kleines Plugin gibt, welches simpel und unkompliziert in den head der Seite integriert. Wer also lieber ein Plugin anstatt des händischen Änderns im Theme nutzen will, der findet im Anschluss nun das Plugin von Enrique, welches er mir dankenderweise zur Verfügung gestellt hat.
Ebenso sollte die Anmerkung nicht unbeachtet bleiben: Es lohnt die Apache-Logs auszulesen, denn die Suchseiten werden wohl nicht indiziert. Dabei durchsucht man einfach die Log-Datei nach GET /?s=. Ich für meinen Teil habe das mal getan und dabei keinerlei Eintrag gefunden. Ansonsten sind alle URLs korrekt, so dass die eigentliche Idee hinter diesem Beitrag: Suchresultate nicht zu indizieren, hinfällig geworden ist und die reine Ausprägung „doppelter Content“, wie eng man das auch sehen will, beachtet werden sollte. Dazu folgender Lösungsvorschlag und das entsprechende Plugin.

Im weiteren ist mir aufgefallen, dass der Feed indiziert wird, obwohl ich ihn per robots.txt ausschließe - Disallow: */feed/, allerdings nicht von klassischen Suchmaschinen, sondern von Statistiktools und (Blog-)Verzeichissen etc.

Das Plugin arbeitet nach folgendem Lösungsansatz, wobei es per Konfiguration möglich ist, die Kategorien ebenso mit dem index, follow-Tag zu versehen.


if ( ( is_single() || is_page() || is_home() ) && ( !is_paged() ) ) {
	echo '' . "\n";
} else {
	echo '' . "\n";
}

Download:

Download als php-Datei: seo-by-enrique.zip - 13 KByte

28 Kommentare

  1. @Oliver: nein, ist mir nciht bekannt. Empfinde aber für die Aufgabe ein Plugin überflüssig, da es im Template gut platziert ist. Aber sicher eine Alternative für alle, die so gar nicht an das Markup wollen.
    @Micha: habe es oben noch ergänzt, für die Copy/Paste-Leute.

  2. @Oliver: Bevor ich mir wegen so einer Kleinigkeit ein Plugin antue, code ich lieber. mybeNI hat wieder ein Plugin gefunden, was XSS anfällig ist, SEO Title Tag. Plugins also nur wenn unbedingt nötig.

  3. Eingebaut und zum Ausprobieren bereit. Gute Idee.

    Aber im Beispiel des Update 2 sind die Anführungszeichen falsch gesetzt! Und fehlt hinter "is_page" nicht die Klammer ()?

  4. Hi,

    <meta name="robots" content="index, follow' />

    ist unnötig, da dies eh die "Standardeinstellung" für die Bots ist.

    Ich würde eher folgendes vorschlagen:

    <?php if(is_search()) { ?><meta name="robots" content="noindex, follow" /> <?php } ?>

    Die oben genannte Komplettlösung:

    <?php if ( ( is_home() && !is_paged() ) || is_single() || is_page {
    echo '<meta name="robots" content="index, follow' />";
    } else {
    echo '<meta name="robots" content="noindex, follow' />";
    } ?>

    würde ich persönlich nicht einsetzen, da dann die Kategorie- und Tag-Übersicht nicht indiziert wird und Kategorieübersicht ist für mich kein doppelter Inhalt im Vergleich zu der Startseite. Bei mir unterscheidet sich die Kategorieübersicht an einigen Punkten von der Startseite.

    Viele Grüße

  5. @Perun,
    bevor ich diese Maßnahme ergriff, habe ich mal nach einem Beitragstitel von mir gegoogelt und mir dann die übersprungenen Ergebnisse angesehen. Der Beitrag war unter /page/2/, category/bla/, tag/foo/, tag/bar/, 2007/06/.
    Überall doppelter Ihnalt. Jetzt, nachdem ich das umgesetzt habe, wird ein neuer Artikel nur noch 2x gelistet. Auf der Startseite, weil ich da die ersten 5 Beiträge mit the_exerpt anzeige und unter dem Permalink.
    Der Idealzustand ist doch, das die Suchmaschine einen Beitrag nur 1x unter seinem Permalink indexiert. Die Kategorien, Tags, Archive dienen doch nur den Nutzern, darüber etwas für sie Interessantes zu finden.

  6. @Micha,

    Der Idealzustand ist doch, das die Suchmaschine einen Beitrag nur 1x unter seinem Permalink indexiert.

    Für wen ist dieser Zustand ideal? Für Google, sicherlich. Für Menschen ... das bezweifle ich.

    Die Kategorien, Tags, Archive dienen doch nur den Nutzern, darüber etwas für sie Interessantes zu finden.

    Ja sicher dienen sie den menschlichen Besuchern. Für die machen wir doch die ganze Arbeit ... nicht für Google. Daher macht es Sinn wenn z. B. ein Beitrag welcher sich z. B. mit WordPress beschäftigt dass dieser auch unter der Kategorie "WordPress" gelistet und indiziert wird.

  7. Hallo Frank!
    Ich benutze im Header nur den Ausschluß der Search; ich wollte nur kurz auf ein Problem hinweisen, das ihr als Pagerank starke Seiten wahrscheinlich garnicht mehr kennt. 🙂 Beiträge landen im Supplementalindex die Tag-Suche jedoch im normalen Index, da die Lieblingssuchmaschine diese dennoch nimmt, wenn man jetzt per deinem update script die Tag-Suchen nicht mehr indexieren lässt; ist man ganz draußen. Ich empfehle auf alle Fälle, daß pr-schwache Seiten wie ich vorher mit der Suche: site:www.bla-bla-bla.de& (die zeigt im Moment noch den Supplemental) anschauen auf was sie sich einlassen.
    Viele Grüße
    Michael

  8. Hallo Frank!
    Habe die Diskussion hier gerade eben erst entdeckt. Ich habe mir vor einiger Zeit bereits ein einfaches Plugin geschrieben, das ich auf allen meinen WP-Domains erfolgreich und ohne Probleme einsetze. Ich schicke es Dir mit getrennter Post.
    Lieben Gruß, Enrique

  9. Wahrscheinlich stelle ich mich gerade bloß super doof an, aber egal welche der drei Lösungen ich in meinen Header schmeiße, jedesmal zerstört es mein Blog. Es wird einfach nichts mehr an den Browser übertragen und eine weiße Seite angezeigt. Gucke ich mir den Sourcecode der Seite an, ist es ein leeres File.
    was mach ich falsch?

  10. Hi, ich habe tatsächlich das meiste verstanden. Habt ihr eine Idee, wie man es machen könnte, wenn für die fixen Seitenränder mit Links, standardmäßig eine Indexierung und follow erlaubt sein sollen, aber einzelne Beiträge und fixen Seiten nur nach Freigabe durch den Autor indexiert werden sollen (inkl. follow) und die Kommentare grundlegend gesperrt sein sollen? Ich bin gespannt, ob euch was einfällt. Die Metatags für Post-Beiträge und fixe Seitenbeiträge müssten dann dynamisch nach Eingabe ... äh, geht das überhaupt?

  11. @MBW: Die Freigabe durch den Autor könnte man über ein "benutzerdefiniertes Feld" abfragen. Der Autor müsste dieses dann im Editbereich setzen. Je nach Wert des Feldes wird follow oder nofolles in den head geschrieben.
    Die Kommentare werden im Standard von WordPress nicht verfolgt - rel="nofollow". Warum das nicht so toll ist, dazu gibt es genügend Texte im www.
    Damit sollte deine Anforderung einfach lösbar sein, denn genau dafür sind diese "benutzerdefinierten Felder". Schau mal hier im Blog, im Plugin-Tutorial nud im Photoblog-Theme nutze ich diese Felder für ähnliche Anwendungen. Dort kannst du auch sehen und nachlesen, wie man auf sie zugreift. Das Photoblog-Theme bringt auch ein Plugin mit, mit dem man nur ein einzelnes Feld auslesen kann.
    LG Frank

  12. @Frank - Ach ja - doch so einfach 🙂 - danke. Ich werde mich auf den genannten Stellen umschauen, jetzt weiss ich auf jeden Fall wonach ich suchen muss.

  13. WICHTIGER HINWEIS:
    Wer seine Apache-Logs regelmäßig kontrolliert, wird feststellen, dass Google vor etwa zwei Wochen dazu übergegangen ist, simulierte Suchabfragen zu senden, um die Qualität der Datenbanken zu prüfen und verbessern. Abgesehen von der Tatsache, dass diese nervigen Abfragen die eigene Statistik verderben, sollten die vom Bot provozierten Ergebnis-Seiten das Noindex-Tag zurückliefern. Sonst ist doppelter Content garantiert.

Kommentare sind geschlossen.