Doppelte Inhalte mögen Suchmaschinen bekanntermaßen nicht. Doch meistens können Webseiten über http://domain.de und http://www.domain.de erreicht werden. Für die Suchmaschine sind das zwei unterschiedliche Dinge.
Ein recht einfacher Ansatz mit ASP.NET kann so aussehen:
// using System.Web.UI.HtmlControls; HtmlLink canonicalLink = new HtmlLink(); canonicalLink.Attributes["rel"] = "canonical"; canonicalLink.Href = Request.Url.AbsoluteUri.Replace("www.", ""); Page.Header.Controls.Add(canonicalLink);
Das ganze kommt dann z.B. in den Event-Handler Page_Load (Master-Datei, Basisklasse, …). Es wird dann im HTML-Head der Seite das entsprechende Tag erzeugt:
<link rel=“canonical“ href=“http://domain.de/site.aspx“ />
Über Request.Url.AbsoluteUri wird die aktuelle URL samt Host und Parametern ermittelt und per Replace(„www.“, „“) einfach, sofern vorhanden, das „www.“ entfernt. Aber Vorsicht: Alle Fundstellen mit „www.“ werden entfernt! Also auch etwaige übergebenen Parameter > d.h bei Bedarf nachbessern.
Alternativ kann aber auch per 301-Redirect in der global.asax umgeleitet werden.
Das könnte dann wie folgt aussehen:
<%@ Application Language="C#" %> <script runat="server"> void Application_BeginRequest(object sender, EventArgs e) { string url = HttpContext.Current.Request.Url.ToString().ToLower(); if (!url.StartsWith("http://domain.de")) { // alle auf .de leiten url = url.Replace("domain.net", "domain.de"); url = url.Replace("domain.com", "domain.de"); // "www." entfernen url = url.Replace("http://www.domain", "http://domain"); // permanente (301) Umleitung HttpContext.Current.Response.Status = "301 Moved Permanently"; HttpContext.Current.Response.AddHeader("Location", url); } } </script>
Hier wird jeden Anfrage geprüft und ggf. auf die bevorzugte Domain per 301 umgeleitet – sprich das „www.“ einfach entfernt.