代码之家  ›  专栏  ›  技术社区  ›  Sasha Chedygov

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

  •  9
  • Sasha Chedygov  · 技术社区  · 16 年前

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

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

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

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

    10 回复  |  直到 14 年前
        1
  •  15
  •   alex    14 年前

    我将使用选项3,并使slug(最后一位)可选

    因为?

    • ID将始终是唯一的…例如,两个人可以用“好消息”这个名字做一条线。
    • 搜索机器人可以访问slug以获取一些seo优点
    • 弹头应该是可选的…仅使用ID仍然可以让您访问该站点。如果slug不在那里,如果你担心重复的内容,你可以转发到slug的版本。您可以始终使用规范化的元标记来告诉Google索引被阻塞的版本。
    • 可选slug的另一个好处是,如果有人将URL复制并粘贴到文档中,则在文档结尾处可能会有字符被截断(因为URL通常没有空格,因此它们不会换行)。选择slug意味着人们有更多的机会找到你的页面。

    我相信这就是堆栈溢出所做的……同时也注意到他们在搜索引擎方面做得相当好。

    更新

    从评论中,确保301将任何丢失的slug版本重定向到正确的slug。

        2
  •  6
  •   Norman Ramsey    16 年前

    URL 1绝对是次优的。URL 2很有吸引力,但是如果标签发生冲突,特别是如果它们只在标点符号上有所不同,则会有混淆的风险。所以我认为URL 3是明确的赢家。

    还要注意,仅仅因为你 显示 URL 3没有理由不 接受 所有3个,另外两个重定向。如果URL 2不明确,它应该重定向到消歧页面。

        3
  •  2
  •   Gromer    16 年前

    我认为第二个URL对SEO来说是最好的,因为它很有意义,而且深度较低。这对人们来说也更好,因为你可以查看URL并知道内容是关于什么的。

        4
  •  2
  •   Chad Birch    16 年前
    1. 不包括标题,因此您将丢失在URL中包含这些关键字的额外SEO值。

    2. 不会很好地工作,因为它没有一个唯一的数字标识,所以如果有人试图发表题为“这是论坛帖子”的主题,你会怎么做?然后你开始进入Digg做的奇怪的事情,它必须给第二个地址。” http://www.example.com/topic/this-is-a-forum-post_2 “,等等。这使得获取他们试图加载的URL变得更加困难,并且很难准确地找到他们想要访问的主题。

    3. 两者兼备,这是我的风格选择。

        5
  •  1
  •   Community CDub    8 年前

    StackOverflow似乎使用模式3,完全忽略标题(只使用ID)。

    这就形成了一个很好的语义URL,而且也很容易实现,而且如果标题稍后更改,它仍然有效。

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

    Best way to format pretty URLs for numeric IDs

        6
  •  1
  •   rymn    16 年前

    我去买第一个。你知道现在真的没关系。由于有很长的URL转换器,它将激增,并将成为未来的标准。记住,URL越长,获得的SEO点数就越少。

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

        7
  •  1
  •   Aaron    16 年前

    对于搜索引擎优化/流量,无疑是第二位。每次从URL中获取那些无意义的数字。

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

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

        8
  •  1
  •   Community CDub    8 年前

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

    堆栈溢出使用第三种方式,可能是因为没有为SEO优化堆栈溢出URL。我不确定上面的答案。

    但在我使用谷歌的经验中,我经常能从其他论坛看到解决方案,而StackOverflow解决方案几乎是不可见的。

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

    如果这两个URL都是一个且相同的,那么SEO只需要选择2,而选项2则没有那么优化。

        9
  •  1
  •   Qualsmith    15 年前

    我不相信更长的网址是SEO的麻烦。深度似乎是一个更大的问题,并不是通过计算斜杠,而是通过从索引页(具有排名)到内容页所需的步骤。我最近创建了一个名为/content/roofing/how-much-do-a-shingle-roof-cost.html的虚拟测试页,并将它放到服务器上,只是为了测试路径并确保我的目录正常工作。我甚至不知道谷歌是如何发现这个页面的,但它确实发现了,并且开始出现流量,所以我必须给它提供内容,让它成为家庭的一部分。虚拟内容是我们的about页面的一个副本,所以它不是空的,但是我很惊讶一个未经处理的页面会得到牵引力,并且认为URL与此有关。

    这为一个URL提供了上述3个选项的一个小选择。如果你用3号,但最后加了.html怎么办?我通常使用动态URL来完成这项工作,但是我没有具体的证据证明它是有用的。根据谷歌的说法,他们吹嘘说他们可以对动态URL进行索引,所以根本不需要重写URL。谷歌并不介意其他引擎在这方面做得不够好。我信任的几个站点在末尾添加了HTML(例如Blogger),它不会造成伤害,所以我仍然这样做。

        10
  •  0
  •   Sujoy    16 年前

    我建议使用第一个,因为主题标题可以被管理员更改,这样URL就不一致了。

    www.example.com/topic/123456
    

    还允许用户只编辑URL的最后一位(数字和跳转到另一个主题),这不太可能发生,但仍然是一个可用的特性。