在网站中实现URL slug功能

时间:2010-10-06 00:18:38

标签: url url-routing slug

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

例如,StackOverflow网址如下所示:MVC Dynamic Views From Url Slug。请注意,URL包含记录的ID。如果我要将此页面加入书签,并且由于某种原因记录的ID已更改,我将来无法查看此记录。

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

您能否提供实现此目标的步骤? 你是否使用了唱片的标题并将其缓和,保存那个slu ,,并且再也不会改变它?

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

谢谢!

3 个答案:

答案 0 :(得分:5)

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

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

您需要一个数据库索引才能使slug查找更有效。幸运的是,Django的Slug field会自动创建一个数据库索引。

您可能仍希望拥有一个数字主键,只需简化数据库的其余部分即可。

答案 1 :(得分:1)

您在寻找URL Rewriting吗?

答案 2 :(得分:1)

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