
Bewusst, dynamisch und abhängig von der gerade aufgerufenen Seite. Aber dazu später mehr.
Der Meta-Tag robots ist eines der wertvollsten Werkzeuge im Umgang mit Suchmaschinen, wird aber oft, gerade in der deutschen .NET Blogosphäre, sträflich vernachlässigt. Die meisten Blogs verwenden den robots-Tag mit den Werten index, followin jeder Seite ihres Blog. Viele Blogs verwenden den Tag gar nicht, was den vorherigen Werten gleich kommt. Manches Blog, ich will hier keine Namen nennen, verwendet den Tag gleich mehrfach in einer Seite, erst mit noindex,nofollow und drei Zeilen weiter mit index, follow.
Wie man an diesen Beispielen bereits sehen kann, machen sich die wenigsten Blogbetreiber Gedanken darüber, wie eine Suchmaschine mit dem Inhalt des Blog umgehen soll. Frei nach dem Motto: Google, Yahoo, Bing und wie sie nicht alle heißen, werden es schon richten.
Das tun sie auch, aber bestimmt anders als der Blogbetreiber vielleicht will.
Was macht so ein Spider, oder auch Crawler genannt, mit unseren Blogs?
Er ist hungrig nach Futter und seine Lieblingsspeise ist nun mal Text. Der erste Kontakt mit einem Blog ist meist die Startseite. Hier sind in typischer Manier die letzten Artikel, entweder als Teaser oder manchmal als kompletter Artikel, aufgeführt. Für den Crawler ist das schon eine ganze Menge. Ein hat mehrere Überschriften mit H1 oder H2 Tags und einiges an zugehörigem Text. Wenn sich jetzt im Teaser unter der jeweiligen Überschrift einige Wörter aus eben dieser Überschrift wiederfinden, ist der Crawler schon glücklich. Wird in der Startseite auch noch der robots-Tag mir index, follow verwendet, hat er was er will. Die Startseite landet im Index.
Bei Webseiten, die oftmals sehr viel Wert auf die Startseite legen, mag dieses Verhalten ja gewünscht sein. Ich spreche hier aber von einem Blog. Ich will nicht meine Startseite im Index einer Suchmaschine sehen, sondern meine Artikel.
Nehmen wir an, der Crawler folgt von der Startseite aus dem Link zum Artikel. Er analysiert diesen Artikel und stellt fest, dass Teile des Inhalts bereits im Index vorhanden sind. Was soll ihn nun dazu bewegen diese Artikelseite ebenfalls in den Index mit aufzunehmen? Er hat doch bereits auf der Startseite gefunden was er wollte.
Nun gut, dieses Szenario ist wahrscheinlich stark überzeichnet. In Wirklichkeit sind noch ganz andere Faktoren von Bedeutung. Welche genau weiß ich nicht, denn ich bin kein SEO-Fachmann. Nichtsdestotrotz sagt mir der gesunde Menschenverstand, dass der oben geschilderte Fall sich ziemlich sicher so verhält. Was also tun?
Kurz und knapp, ein radikaler Schnitt. Alle Übersichtsseiten, dazu gehört auch die Startseite, werden mit den Werten noindex, follow im Meta-Tag robots versehen. Klingt schmerzhaft? Ist es für den Moment auch.
Ich habe mich vor ca. drei Monaten getraut diesen Schritt zu tun. Anfangs fiel die Anzahl der indizierten Seiten meines Blog ins Bodenlose. Aber nach und nach zeigte sich der gewünschte Effekt. Mittlerweile sind die verschiedenen Artikel im Index und ranken auf den vorderen Plätzen in den SERPs.
Bei einer Suche zu den Begriffen shared memory .net in Google wird mein Blog auf der ersten Seite gelistet. Wenn diese Suche auf Seiten aus Deutschland begrenzt wird, werden sogar zwei Artikel meines Blog auf der ersten Seite gelistet. Die gleiche Suche bei Bing, listet mich auf die beiden ersten Plätze. Auch mit dem Begriff Web Slice wird mein Blog sowohl bei Google als auch bei Bing auf der ersten Seite gelistet; und das bei 13 Millionen Ergebnissen bei Bing und über 15 Millionen bei Google. Ich bin mit diesem Ergebnis mehr als zufrieden.
Programmtechnisch ist die dynamische Verwendung des robots-Tag nicht schwer umzusetzen.
Da BlogEngine.NET nur einen ContentPlaceHolder in der MasterPage des jeweiligen Theme verwendet, ist der Weg über den Head-Bereich im Markup verbaut. Eine rein codebasierende Variante ist allerdings auch nicht schwerer zu verwirklichen.
Da auf die einzelnen Meta-Tags im Header über einen ControlCollection zugegriffen werden kann, ist der robots-Tag einfach zu finden. Wenn der Meta-Tag gefunden wurde, wird der entsprechende Wert gesetzt. Sollte er nicht gefunden werden, wird der Tag mit dem entsprechenden Wert der ControlCollection hinzugefügt.
In eine Methode verpackt, muss dieser Methode nur noch der gewünschte Wert mitgegeben werden. Um Code-Redundanz zu vermeiden, wird die Methode als statische Methode in einer Hilfsklasse verwendet, der als zweiter Parameter die aktuelle Page-Instanz mitgegeben wird.
public static void AddMetaRobots(string metaContent, Page page)
{
HtmlMeta tag = null;
foreach (Control ctrl in page.Header.Controls)
{
if (ctrl is HtmlMeta
&& ((HtmlMeta)ctrl).Name.ToLowerInvariant() == "robots")
{
tag = (HtmlMeta)ctrl;
tag.Content = metaContent;
break;
}
}
if (tag == null)
{
var meta = new HtmlMeta();
meta.Name = "robots";
meta.Content = metaContent;
page.Header.Controls.Add(meta);
}
}So kann nun einfach in jeder Seite des Blog der richtige Wert für den robots-Tag gesetzt werden. In der Startseite, dem Archiv, im Web Slice Container und der Übersichtsseite für Artikelserien wird der Wert noindex, follow gesetzt. Im Page_Load Ereignis der jeweiligen Seite braucht nur ein Aufruf der obigen Methode zu erfolgen:
BlogUtils.AddMetaRobots("noindex, follow", this.Page);In den Artikel- und statischen Seiten wird dementsprechend index, follow gesetzt.
BlogUtils.AddMetaRobots("index, follow", base.Page);Fazit:
Wenn mir als Blogbetreiber von den einschlägigen Suchmaschinen ein Werkzeug zur Steuerung der Suchmaschinenbots zur Verfügung gestellt wird, warum sollte ich es dann nicht nutzen?
In der heutigen Zeit, mit über 180 Millionen Seiten im Internet, ist die Auswahl an Informationen nahezu unüberschaubar. Die Anzahl der SERPs jeder Suchanfrage steigen ständig. Wie soll unter diesen Voraussetzungen ein Artikel meines Blog überhaupt gefunden werden? Wenn ich nichts dafür tue, mit Sicherheit gar nicht.
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitte "kicken" sie ihn.
