
8 November 2009, 13:51 von
klaus_b2075 mal gelesen.In letzter Zeit fielen mir bei der Überprüfung meines Blog in den Google Webmaster-Tools vermehrte Hinweise auf Double Content auf. Die Ursache war schnell gefunden. Jede angemahnte Seite war mit zwei URLs vertreten: einmal mit der original URL und einmal mit einer URL komplett in Kleinschreibung. Für dieses Verhalten konnte nur einer der zahlreichen Bookmark-Dienste verantwortlich sein. Leider konnte ich nicht ermitteln woher die URLs stammten, da die Quelle nicht angezeigt wird. Da die Ursache nicht entfernt werden konnte, muss an der Wirkung gearbeitet werden.
ASP.NET basierende Anwendungen betrachten by Design URLs in unterschiedlicher Schreibweise als gleich. Es macht also keinen Unterschied ob Das-ist-die-selbe-Seite.aspx oder das-ist-die-selbe-seite.aspx aufgerufen wird. Es wird beide male die gleiche Seite angezeigt. Dieses Verhalten ist für den Anwender eigentlich nicht schlecht, da er nicht auf Groß- und Kleinschreibung achten muss. Für eine Suchmaschine ist dieses Verhalten jedoch der gleiche Inhalt unter verschiedenen URLs; also Double Content.
Im Falle meines Blog, der auf Blogengine.NET basiert, war die Lösung des Problems relativ einfach. Bei der Anforderung einer URL musste ich lediglich die angeforderte URL des jeweiligen Artikel mit der gespeicherten URL aus dem Post-Objekt vergleichen. Sind diese nicht identisch, wird eine permanente Umleitung, Statuscode 301, mit der URL aus dem Post-Objekt an den Client gesendet. Folgende Anpassung ist dabei in der Datei post.aspx.cs im Wurzelverzeichnis der Anwendung vorzunehmen. Die Zeilennummern im Listing entsprechen dabei den Zeilennummern in der Datei.
// verhindert double content durch
// unterschiedliche Schreibweise der URL
string requestUri = this.Request.RawUrl.Substring(
Request.RawUrl.LastIndexOf('/') + 1);
string postUri = this.Post.RelativeLink.Substring(
Post.RelativeLink.LastIndexOf('/') + 1);
if (!postUri.Equals(requestUri, StringComparison.Ordinal))
{
this.Response.Clear();
this.Response.StatusCode = 301;
this.Response.AppendHeader(
"location",
Post.RelativeLink.ToString());
this.Response.End();
}Anwender die auch Pages unter Blogengine.NET verwenden, sollten natürlich auch die Datei page.aspx.cs, ebenfalls im Wurzelverzeichnis zu finden, entsprechend anpassen.
Die kleine Änderung im Code zeigte Wirkung, denn nach ein paar Tagen waren keine Hinweise mehr auf Double Content in den Google Webmaster-Tools zu finden.
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitte "kicken" sie ihn.
