为数字 ID 格式化漂亮 URL 的最佳方法

Posted

技术标签:

【中文标题】为数字 ID 格式化漂亮 URL 的最佳方法【英文标题】:Best way to format pretty URLs for numeric IDs 【发布时间】:2010-10-25 11:13:42 【问题描述】:

好的,假设我正在编写一个论坛应用程序,并且我想要漂亮的 URL。但是,我所有的表都使用数字 ID,因此我不确定格式化这些资源的 URL 的最佳方法。假设我正在尝试获取 ID 为 123456 且标题为这是一个论坛帖子的主题。我已经看到它通过几种方式完成:

    www.example.com/topic/123456 www.example.com/topic/this-is-a-forum-post www.example.com/topic/123456/this-is-a-forum-post

考虑到所有因素(包括 SEO),您会说哪一个是最佳 URL?

对不起,如果这个问题太含糊,但它似乎与编程有关,而且并不是非常开放,因为我只是想听听每种方法的优缺点。

【问题讨论】:

【参考方案1】:

我会选择选项 3,并将 slug(最后一点)设为可选

因为?

ID 永远是唯一的...例如 2 个人可以创建一个名为“好消息”的主题 搜索机器人可以访问 slug 以获得一些 SEO 优势 slug 应该是可选的...仅使用 ID 仍然可以让您访问该站点。如果 slug 不存在,如果您担心重复的内容,您可以转发到 slug 的版本。您始终可以使用规范元标记告诉 Google 索引 slugged 版本。 可选 slug 的另一个好处是,如果有人将 URL 复制并粘贴到文档中,则它有可能在结尾处截断字符(因为 URL 通常没有空格,所以它们不会中断到新行)。选择 slug 意味着人们更有可能找到您的页面。

我相信这就是 Stack Overflow 所做的......并且还注意到他们在搜索引擎中的表现相当不错。

更新

在 cmets 中,确保 301 将任何缺失的 slug 版本重定向到正确的 slug。

【讨论】:

嗯,我正要问你是否应该将“slug”设为可选,但看起来你读懂了我的想法。谢谢! :) 哈哈,我有时也能做到! 确保在页面中定义您的规范 URL。 如果您将 slug 设为可选,请务必将不正确或缺少的 slug 重定向到正确的规范版本。这确保了搜索引擎只会看到一个页面。 (***.com 做错了) ***.com 也正确地进行了这种重定向(至少现在他们这样做了)。【参考方案2】:

我不相信更长的 URL 是 SEO 问题。深度似乎是一个更大的问题,而不是通过计算斜线,而是通过从具有排名的索引页面到内容页面所需的步骤。我最近创建了一个名为 /content/roofing/how-much-does-a-shingle-roof-cost.html 的虚拟测试页面,并将其扔到服务器上,只是为了测试路径并确保我的目录正常工作。我什至不确定谷歌是如何发现这个页面的,但它确实发现了,而且它开始获得流量,所以我不得不给它内容,让它成为家庭的一部分。虚拟内容是我们关于页面的副本,因此它不是空的,但我很惊讶未升级的页面会受到关注,并认为 URL 与此有关。

这为 URL 提供了上述 3 个选项的替代方案。如果您选择 3 号但在末尾添加 .html 会怎样?我通常使用动态 URL 来执行此操作,但我没有具体证据表明它有帮助。据谷歌称,他们吹嘘他们可以很好地索引动态 URL,因此根本不需要重写 URL。如果其他引擎不那么擅长,谷歌一点也不介意。我信任的几个网站在末尾添加了 html(例如博客),它不会受到伤害,所以我仍然这样做。

【讨论】:

很好的发现。但是 .html 有什么帮助呢? .html 只是告诉引擎它更有可能是一个静态文档,或者至少您打算这样对待它——这有帮助吗?我不确定。【参考方案3】:

我会选择选项 2,因为 SEO 可以更好地理解。

Stack Overflow 使用了第三种方式,可能这就是 Stack Overflow 的 url 没有针对 SEO 进行优化的原因。我不确定上面的答案。

但根据我使用 Google 的经验,我经常可以从其他论坛看到解决方案,而 *** 解决方案几乎不可见。

Best way to format pretty URLs for numeric IDs Best way to format pretty URLs for numeric IDs

如果两个网址相同,则 SEO 只需使用选项 2,该选项的优化程度较低。

【讨论】:

<link rel="canonical" href="http://***.com/questions/851140/best-way-to-format-pretty-urls-for-numeric-ids">【参考方案4】:

对于 SEO/流量,毫无疑问绝对是第二名。每次都从 URL 中取出那些无意义的数字。

www.example.com/topic/this-is-a-forum-post

从您的数据库中提取“this-is-a-forum-post”并通过查询将其映射回您数据库中的 ID 号。然后将内部 URL 重写到真实页面,例如 /topic.php?ID=324342

【讨论】:

【参考方案5】:

我会选择第一个。你知道现在这真的不重要了。由于有长 URL 转换器,它只会激增并成为未来的常态。请记住,您的 URL 越长,您获得的 SEO 积分就越少。

而且您无法控制人们命名论坛主题的方式。所以真的,为了简单和规范,我只选择第一个。

【讨论】:

【参考方案6】:

我建议第一个,因为为了清楚起见,管理员可以更改主题标题,然后网址会不一致。

www.example.com/topic/123456

还允许人们只编辑 url 的最后一位(数字并跳转到另一个主题),这不太可能发生但仍然是一个可用的功能。

【讨论】:

【参考方案7】:

    不包含标题,因此您将失去在 URL 中包含这些关键字的额外 SEO 价值。

    效果不好,因为它没有唯一的数字 ID,所以如果其他人试图发布标题为“这是一个论坛帖子”的主题,你会怎么做?然后你开始进入 digg 所做的奇怪的事情,它必须给第二个 URL “http://www.example.com/topic/this-is-a-forum-post_2”,依此类推。这使得获取他们尝试加载的 URL 并准确确定他们尝试访问的主题变得更加困难。

    两全其美,这将是我的选择。

【讨论】:

你是对的,方法#2在有重复的时候看起来一点也不好看。没想到。【参考方案8】:

*** 似乎使用了模式 3,标题被完全忽略(只使用了 id)。

这使得 URL 的语义很好,并且也很容易实现,并且在标题稍后更改时仍然有效。

当然,标题可能完全是假的:

Best way to format pretty URLs for numeric IDs

【讨论】:

好点,但这实际上并不重要,不是吗?我想不出这种情况会对 SEO 或安全构成威胁。 不,我认为这不是问题。它的工作原理就像将名称放在电子邮件标题中一样。被系统忽略,但却是为人类存储/传输注释的好方法。【参考方案9】:

URL 1 绝对不是最优的。 URL 2 很吸引人,但如果标签发生冲突,您会冒着混淆的风险,尤其是当它们仅在标点符号上有所不同时。所以我会说 URL 3 是明显的赢家。

还请注意,仅仅因为您 显示 URL 3 没有理由不接受所有 3 个,其他两个重定向。如果 URL 2 不明确,则应重定向到消歧页面。

【讨论】:

最后一句话是个好主意..有点像***! 嗯,绝对是个好主意(支持所有三个)。我会调查的。谢谢。【参考方案10】:

我认为第二个 URL 最适合 SEO,因为它有意义且深度较小。它对人们也更好,因为您可以查看 URL 并了解内容的内容。

【讨论】:

以上是关于为数字 ID 格式化漂亮 URL 的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

格式化此数字的最佳方法是啥?

在javascript中用逗号格式化数字变量的最佳方法是啥

在 jQuery 中,将数字格式化为 2 位小数的最佳方法是啥?

检测文本字符串中的(淘气或漂亮)URL 或链接

将一个分隔的 id 字段转换为它们的漂亮值 - 嵌套替换是最佳选择吗?

Python - 将字符串格式化为 url 的最短方法