所以我计划为我的网站提供友好的网址,其中每个网页都有自己的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
。
答案 0 :(得分:2)
首先,一些历史:
这些网址的最初原因是人们希望他们的数据库只能通过ID编制索引。通过slug索引(并强制执行唯一性)对于计算机和程序员来说都是额外的工作。 Rails使这种风格很受欢迎(/page/1
)。
但这种风格对搜索引擎来说相当不透明。所以人们在ID(/page/1-slug-for-page
)之后添加了slug来帮助搜索引擎(和用户)。但是作为结尾的文本是无关紧要的 - 只有数字才重要。 slug甚至可能不存储在数据库中(有时它是自动生成的),并且它没有被编入索引以节省空间。
哪一个更受欢迎?
为了将ID放在URL中,任何一种样式都可以,但“数量然后slug”样式更受欢迎。
我会将重定向用于任何与当前slug不匹配的标准网址。但是,当slug是唯一的时候,人们是否也会从带有slug的URL重定向,但没有ID?
只需选择ID
或slug
并随之运行。
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:
正如您所看到的,问题URL包含换行符,但URL的可点击部分仍包含ID,因此链接仍然有效。