友好的URL应该在开头还是结尾都有ID?

时间:2013-07-26 01:25:31

标签: friendly-url

所以我计划为我的网站提供友好的网址,其中每个网页都有自己的ID。所以我发现了人们这样做的两种常见方式:

http://www.example.com/page/123/slug-for-the-page
http://www.example.com/page/slug-for-the-page/123

哪一个更受欢迎?什么是支持和反对的论据?我看到,在输入URL时,第二种形式更容易,因为浏览器更容易从历史记录或书签中自动填充。但对我来说,最后有ID是很奇怪的。

我会将重定向用于任何与当前slug不匹配的标准网址。但是,当slug是唯一的时候,人们是否也会从带有slug的URL重定向,但是没有ID?例如,将http://www.example.com/page/slug-for-the-page重定向到http://www.example.com/page/slug-for-the-page/123

2 个答案:

答案 0 :(得分:2)

首先,一些历史:

这些网址的最初原因是人们希望他们的数据库只能通过ID编制索引。通过slug索引(并强制执行唯一性)对于计算机和程序员来说都是额外的工作。 Rails使这种风格很受欢迎(/page/1)。

但这种风格对搜索引擎来说相当不透明。所以人们在ID(/page/1-slug-for-page)之后添加了slug来帮助搜索引擎(和用户)。但是作为结尾的文本是无关紧要的 - 只有数字才重要。 slug甚至可能不存储在数据库中(有时它是自动生成的),并且它没有被编入索引以节省空间。

  

哪一个更受欢迎?

为了将ID放在URL中,任何一种样式都可以,但“数量然后slug”样式更受欢迎。

  

我会将重定向用于任何与当前slug不匹配的标准网址。但是,当slug是唯一的时候,人们是否也会从带有slug的URL重定向,但没有ID?

只需选择IDslug并随之运行。

1)如果按ID查找,则应忽略slug(它们仅适用于搜索引擎)。如果您有ID,您可以轻松地重定向到'真实'slug。 (纠正任何截断的URL等)

2)如果你用slug查找,你的slugs必须是唯一的。 (大多数网站的日期范围都是为了让这更容易)。一旦你在slug上进行数据库查找,就不清楚为什么你甚至需要URL中的ID。 (它们看起来很丑陋而且很随意,所以放弃它们会更好。)你提出的是额外的工作(对你和计算机而言),但我不确定它是否有用。

只有高流量网站需要担心在slugs与ID之间建立索引的索引大小/速度权衡。即便如此,通过做技巧可以最大限度地减少差异。 (即不要查找slug,而是查找slug的MD5的前8个字符。)

答案 1 :(得分:1)

在开头使用ID的一个好处是:

在某些情况下,长URL被截断(例如通过换行符),因此只有URL的第一部分是可点击的。现在,如果ID在最后(因此在第二部分中),单击URL将导致404.如果ID位于开头(因此在第一部分中),该链接通常仍然有效

实施例? Plain text mails from Stack Exchange

  

enter image description here

正如您所看到的,问题URL包含换行符,但URL的可点击部分仍包含ID,因此链接仍然有效。