【问题标题】:Should a friendly URLs have ID at the beginning or at the end?友好的 URL 应该在开头还是结尾有 ID?
【发布时间】:2013-07-26 03:16:34
【问题描述】:

所以我计划为我的网站设置友好的 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,我将使用重定向到规范 URL。但是,当 slug 是唯一的时,人们是否也会从具有 slug 但没有 ID 的 URL 进行重定向?例如,将http://www.example.com/page/slug-for-the-page 重定向到http://www.example.com/page/slug-for-the-page/123

【问题讨论】:

  • 有人对此进行过可用性研究吗?例如,开头有 ID 是否会阻止用户自动完成他们的 URL?末尾有 ID 是否更容易因为 URL 结尾被截断而导致 URL 变得无效而导致 ID 不完整?

标签: friendly-url


【解决方案1】:

首先,一些历史:

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

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

哪个更受欢迎?

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

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

只需选择 IDslug 并运行它。

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

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

只有高流量的网站才需要担心索引大小/速度在 slug 与 ID 上的索引之间的权衡。即便如此,也可以通过一些技巧将差异最小化。 (即不要查找 slug,而是查找 slug 的 MD5 的前 8 个字符。)

【讨论】:

  • 您不希望只有 slug 的原因是,有时您必须重命名页面,然后您或必须更改 slug 或 slug 与页面名称不同步。跨度>
  • 无论如何,我知道一个更受欢迎,但我想知道 URL 中另一种形式的 ID 的参数是什么。有什么论据吗?难道真的是随心所欲,只是口味的偏好?人们有什么故事和经历?
  • 对于“最佳” URL 方案,互联网上没有达成共识,所以我认为这很随意。
【解决方案2】:

ID 放在开头的一个好处:

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

例如? Plain text mails from Stack Exchange:

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

【讨论】:

    猜你喜欢
    • 2012-09-24
    • 2021-12-07
    • 2014-07-29
    • 2015-06-19
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    相关资源
    最近更新 更多