这是通过301 重定向到首选规范 URL来完成的。该脚本检查请求的 URL 以查看 URL 是否与 URL 的“首选”版本匹配。如果没有,它会向浏览器发送一个 301 重定向,并告诉它该页面已永久移动到该位置。
这样做的原因是相当明显的:没有这个,你可以构建成千上万的 URL,比如http://stackoverflow.com/questions/6291678/foo
, http://stackoverflow.com/questions/6291678/bar
, http://stackoverflow.com/questions/6291678/blah
; 都指向相同的内容。搜索引擎会因重复内容而惩罚您。
编辑
在您的 ASP.Net 应用程序中,您可以将浏览器提供的 slug 与存储在数据库中的 slug 进行比较。如果它们不匹配,则发送 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 页面抛出任何请求。