Dies erfolgt über 301 Weiterleitung zur bevorzugten kanonischen URL. Das Skript überprüft die angeforderte URL, um zu sehen, ob die URL mit der "bevorzugten" Version der URL übereinstimmt. Wenn nicht, sendet es eine 301 Weiterleitung an den Browser und teilt ihm mit, dass die Seite dauerhaft an diesen Ort verschoben wurde.
Die Gründe dafür sind ziemlich offensichtlich: Ohne dies können Sie Tausende von URLs wie http://stackoverflow.com/questions/6291678/foo
, http://stackoverflow.com/questions/6291678/bar
, http://stackoverflow.com/questions/6291678/blah
konstruieren, die alle auf denselben Inhalt verweisen. Suchmaschinen würden Sie für doppelten Inhalt bestrafen.
Bearbeiten
In Ihrer ASP.Net-Anwendung können Sie den vom Browser bereitgestellten Slug mit dem im Datensatz gespeicherten Slug vergleichen. Wenn sie nicht übereinstimmen, senden Sie eine 301 Weiterleitung. Sie können dies wahrscheinlich nicht über die web.config oder etwas anderes tun, da die Datenbank involviert ist. Hier ist ein Beispielcode, den ich vor einiger Zeit in meinem Blog gepostet habe (ich bin mir nicht sicher, ob er funktioniert):
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
Dim myId As Integer = 1234
Dim mySlug As String = "preferred-slug"
If Request.Url.AbsolutePath.Equals("/" & myId & "/" & mySlug) = False Then
Response.Clear()
Response.Status = "301 Moved Permanently"
Response.AddHeader("Location", "http://" & Request.Url.Host & "/" & myId & "/" & mySlug & Request.Url.Query)
Response.End()
End If
End Sub
Ich gehe davon aus, dass Sie bereits eine Form von URL-Umschreibung implementiert haben, die jede Anfrage für /\d+/.+
an Ihre asp.net-Seite weiterleitet.