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

Friendly url 友好的URL应该在开头还是结尾有ID?,friendly-url,Friendly Url,因此,我计划为我的网站提供友好的URL,其中每个页面都有自己的ID。因此,我发现人们有两种常见的方法: http://www.example.com/page/123/slug-for-the-page http://www.example.com/page/slug-for-the-page/123 哪一个比较好?赞成和反对的理由是什么?我发现,当键入URL时,第二种形式更容易,因为浏览器更容易从历史记录或书签中自动完成。但对我来说,最后有身份证真的很奇怪 我将使用重定向到任何不匹配当前sl

因此,我计划为我的网站提供友好的URL,其中每个页面都有自己的ID。因此,我发现人们有两种常见的方法:

http://www.example.com/page/123/slug-for-the-page
http://www.example.com/page/slug-for-the-page/123
哪一个比较好?赞成和反对的理由是什么?我发现,当键入URL时,第二种形式更容易,因为浏览器更容易从历史记录或书签中自动完成。但对我来说,最后有身份证真的很奇怪

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

首先,一些历史:

这些URL的最初原因是人们希望他们的数据库只通过ID进行索引。通过slug建立索引(并强制唯一性)对计算机和程序员来说都是额外的工作。Rails使这种风格流行起来(
/page/1

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

哪一个比较好

对于将ID放入URL,两种样式都可以,但是“数字然后slug”样式更受欢迎

我将使用重定向到任何不匹配当前slug的规范URL。但是,当slug是唯一的时,人们是否也会从有slug但没有ID的URL重定向呢

只需选择
ID
slug
并使用它运行即可

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

2) 如果按段塞查找,则段塞必须是唯一的。(大多数网站都按日期划分范围,以简化此操作)。一旦您在slug上执行数据库查找,就不清楚为什么您甚至需要URL中的ID。(它们看起来很难看,而且很武断,所以最好放弃它们。)你的建议是额外的工作(对你和电脑来说),但我不确定它是否有用


只有高流量的站点才需要担心slug和id索引的索引大小/速度权衡。即使如此,通过耍花招也可以将差异最小化。(也就是说,不要查找slug,而是查找slug的MD5的前8个字符。)

在开头有ID的一个优点:

在某些上下文中,长URL被截断(例如,通过换行),因此只有URL的第一部分是可单击的。现在,如果ID在末尾(因此在第二部分),单击URL将导致404。如果ID在开头(因此在第一部分),链接通常仍然有效

例如:


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

您不希望只使用slug的原因是,有时您必须重命名页面,然后您必须更改slug,或者slug与页面名称处于desync状态。无论如何,我知道其中一种更受欢迎,但我想知道URL中另一种ID形式的参数是什么。有什么论据吗?是不是真的很武断,只是一种口味的偏好?人们有哪些故事、经历?互联网上对“最佳”URL方案没有共识,所以我认为这是相当武断的。有人对此做过可用性研究吗?例如,在开始时使用ID是否会阻止用户自动完成其URL?将ID放在末尾是否会使ID不完整变得更容易,因为URL结尾被截断,所以URL变得无效?