Это делается с помощью 301 перенаправления на предпочтительный канонический URL .Сценарий проверяет запрошенный URL-адрес, чтобы определить, соответствует ли URL-адрес «предпочтительной» версии URL-адреса.Если нет, он отправляет 301 редирект в браузер и сообщает, что страница навсегда переместилась в это место.
Причины этого довольно очевидны: без этого вы можете создать тысячи URL-адресов, таких как /8104019/preobrazovanie-vhodnoi-stroki-v-chistye-chitaemye-i-priemlemye-dlya-brauzera-dannye-marshruta
, /8104019/preobrazovanie-vhodnoi-stroki-v-chistye-chitaemye-i-priemlemye-dlya-brauzera-dannye-marshruta
, /8104019/preobrazovanie-vhodnoi-stroki-v-chistye-chitaemye-i-priemlemye-dlya-brauzera-dannye-marshruta
;все указывает на один и тот же контент.Поисковые системы будут наказывать вас за дублирование контента.
Редактировать
В приложении ASP.Net вы можете сравнить слаг, предоставленный браузером, с слагом, хранящимся в базе данных.Если они не совпадают, отправьте 301 редирект.Вы, вероятно, не можете сделать это через web.config или что-то еще, так как база данных вовлечена.Вот пример кода, который я опубликовал в своем блоге некоторое время назад (не уверен, будет ли он работать):
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
Я предполагаю, что вы уже реализовали некоторую форму перезаписи URL, которая генерирует любой запрос на /\d+/.+
на страницу asp.net.