0

我想知道如何在网站中实现 URL slug 功能,而不会在 URL 中显示当前正在查看的记录的 ID。

例如,StackOverflow URL 如下所示:MVC Dynamic Views From Url Slug。请注意,URL 包含记录的 ID。如果我要将此页面添加为书签,并且由于某种原因记录的 ID 发生了更改,那么我以后将无法查看此记录。

我想实现一个不依赖于记录 ID 的 URL slug 功能,所以它看起来像https://stackoverflow.com/questions/mvc-dynamic-views-from-url-slug

您能否提供实现这一目标的步骤?您是否使用记录的标题并对其进行 slugging,保存该 slug,并且不再更改它?

我正在寻找的示例 URL 是http://weblogs.asp.net/scottgu/archive/2010/10/04/jquery-templates-data-link-and-globalization-accepted-as-official-jquery -plugins.aspx(注意 URL 中没有 ID)

谢谢!

4

3 回答 3

5

这基本上就是你所做的。每种方法都有其优点:

  • 在 Stack Overflow 上,由于可以更改问题的标题,因此 ID 用于永久链接到问题,并且标题不正确的 URL 将简单地重定向。
  • 使用 slug 作为永久标识符意味着 slug 永远不会改变。更改标题是可能的,但它可能看起来令人困惑,您最好重定向 slug。此外,slug 要么需要是全球唯一的,要么你需要找出一种方法来强制每年/月/日或其他任何情况下的唯一性。

您将需要一个数据库索引来提高 slug 查找的效率。幸运的是,Django 的Slug 字段会自动创建数据库索引。

您可能仍然希望有一个数字主键,只是为了使您的数据库的其余部分更简单。

于 2010-10-06T00:57:12.477 回答
1

您在寻找URL 重写吗?

于 2010-10-06T00:21:04.983 回答
1

归根结底,您需要一些独特的方法来识别每个资源。大多数情况下,它是一个整数,因为它比 GUID 对数据库更友好且更人性化。如果您想使用任意字符串,这与整数 ID 的通用技术相同,但您必须小心不要以 2 条或更多条记录共享相同的 slug 结束。

于 2010-10-06T00:40:33.397 回答