3

在我们的系统中,我们有页面的 URL,其中内容(包括标题)基于用户生成的内容。我试图找出平衡 SEO、人类可读性和弹性的最佳设计。

我一直在阅读有关这方面的大量材料,包括 Tim Berners-Lee 早前的文档:Cool URIs don't change

例如,假设我有一个书评网站,用户在其中提交内容(文字评论)以及书名和作者。

因此,如果他们A Tale of Two Cities使用Charles Dickens. URL 可以是:

http://foo.com/charles-dickens/a-tale-of-two-cities

稍后,如果添加狄更斯的另一本书,它可能是:

http://foo.com/charles-dickens/oliver-twist

然后http://foo.com/charles-dickens/可以是网站上所有评论书籍的列表。

但是,如果更改书名,问题就会出现。想象一下用户拼错了一些东西,比如A Tale of Two City,然后它被更正了。这也将更改 URL,并会破坏该页面的任何外部链接、pagerank 等。

处理此类问题的推荐方法是什么?我看到的选项:

  1. 第一次提交获胜:在最初建立 URL 后,不能更改它

  2. 最后一次提交获胜:始终更改 URL。因此,如果用户生成的内容发生更改,请修改 URL。使用这种方法,要么旧 URL 失效,要么保留所有 URL 更改的踪迹,并且所有这些更改仍然有效。Stackoverflow 似乎是这样的。

  3. 不要基于 UGC 的 URL:忽略用户生成的内容,只是想出不基于它的 URL。所以 url 可能是http://foo.com/reviews/1234.

人们对此有何看法?

4

1 回答 1

1

你有点不对;Stack Overflow 结合了 #2 和 #3。一个问题有一个特定的 ID,这就是您找到问题所需的全部内容。例如,这个问题的 id 是11011252。您可以使用 访问问题https://stackoverflow.com/questions/11011252,无需添加从问题标题生成的 URL 部分(或者在这种情况下您是否将其称为 URI?)。事实上,当您使用无标题地址时,它会自动添加(无论是通过重定向还是其他方法)。

更好的是,您可以将任何您想要的内容(我想在合理范围内)附加到地址的末尾。https://stackoverflow.com/questions/11011252/this-text-will-be-ignored将毫无问题地带您解决问题。

Stack Overflow 也不是唯一这样做的网站。我见过的许多其他专注于用户生成内容的网站都遵循相同的协议/无论你怎么称呼它。这似乎是最好的方法,因为它结合了 #3 的优点(基础 URI 保持不变)和 #2 的优点(URL 包含有关其目标的一些信息,用户会喜欢),并且最好all 意味着如果两个人生成具有相同非唯一标识符的内容,您将不会遇到任何 URI 冲突。

于 2012-06-14T20:45:26.797 回答