In der heutigen Zeit, in der SEO eines der Buzzwörter ist die man andauernd um die Ohren gehauen bekommt, ist die Sichtweise einer Suchmaschine auf eine Website oder ein Blog sehr wichtig geworden. Abgesehen von den Schlüsselwörtern einer Website oder eines Blog, ist der sogenannte “double content” ein Kriterium, das in den diversen Webmaster Tools immer wieder angemahnt wird. Unter “double content” versteht man die Situation, in der der selbe Inhalt unter verschiedenen Links verfügbar ist. Das beginnt schon in der Startseite eines Blog oder einer Website. Naturgemäß wird mit dem Aufruf der Domäne und der Startseite ein und der selbe Inhalt wieder gegeben; und das ist bereits “double content”. So geben z.B.: der Aufruf von http://blog.klaus-b.net/ und http://blog.klaus-b.net/Default.aspx den selben Inhalt zurück. Kein Kunststück, denn sie verweisen beide auf die Startseite Default.aspx. Für eine Suchmachine sind dies jedoch zwei verschiedene Ressource. Was also tun?

Na ganz einfach; eine permanente Weiterleitung einrichten und das Problem hat sich erledigt.

public partial class Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {// verhindert eine Google Meldung über "double content" der// Webroot und der Default.aspxif (this.Request.Url.AbsolutePath.Equals(Utils.AbsoluteWebRoot.AbsolutePath)){    this.Response.PermanentRedirect("~/Default.aspx");}
    }
}
Im obigen Beispiel wird in der Default.aspx der Webroot verglichen, ob die angeforderte URL gleich der URL der Domäne ist. Wenn dem so ist, wird eine Permanente Weiterleitung (301) an den Client gemeldet und zur Default.aspx der Webroot, die ja bereits geladen wird, weitergeleitet.
Bei der Methode PermanentRedirect in Zeile 9 des Listings, handelt es sich um eine einfache Erweiterungsmethode.

public static void PermanentRedirect(this HttpResponse response, string url)
{
    string location = null;

    // TODO: prüfen ob die meisten URL-Variatonen abgedeckt sind
    if (url.StartsWith("http:", StringComparison.OrdinalIgnoreCase)|| url.StartsWith("https:", StringComparison.OrdinalIgnoreCase))
    {url = HttpUtility.HtmlAttributeEncode(url);
    }

    if (VirtualPathUtility.IsAbsolute(url))
    {location = url;
    }
    else if (VirtualPathUtility.IsAppRelative(url))
    {location = VirtualPathUtility.ToAbsolute(url);
    }
    else
    {location = url;
    }

    response.Status = "301 Moved Permanently";
    response.StatusCode = 301;
    response.AddHeader("Location", location);
    response.End();
}

Hier wird lediglich der Status der Antwort auf 301 gesetzt, der Header Location mit der neuen Adresse versehen und das ganze an den Client gesendet. Bei der nächsten Indizierung der Seite durch eine Suchmaschine wird bei Aufruf der Webroot der Status 301 mit der Default.aspx als neue Adresse gesendet und somit liegt kein “double content” mehr vor.

Die selbe Vorgehensweise bietet sich immer dann an, wenn in der selben Situation auf immer die selbe Ressource weitergeleitet wird. Es ist z.B.: in einer Website kein direkter Download von extern erlaubt. So wird der Referrer geprüft ob die Anforderung von extern kommt. Wenn ja, PermanentRedirect auf die dafür vorgesehene Seite. Eine Suchmaschine die den externen Link indiziert, ist nichts anderes als eine Anforderung mit ungültigem Referrer.
Es gibt mit Sicherheit noch unzählige weiter Anwendungsmöglichkeiten.

Seit ich die beschriebene Methode verwende, habe ich in den Webmaster Tools keine Meldungen mehr über “double content”, doppelte Titel oder Beschreibungen.

Technorati-Tags:  |  |  | 
Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitte "kicken" sie ihn.
kick it on dotnet-kicks.de