【问题标题】:Best way to design URIs when they are based on user generated content基于用户生成的内容设计 URI 的最佳方式
【发布时间】:2012-06-13 08:47:15
【问题描述】:

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

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

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

因此,如果他们提交了A Tale of Two Cities 的书评(用户无意中拼错了),作者为Charles Dickens。网址可能是:

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

人们对此有何看法?

【问题讨论】:

    标签: http architecture uri


    【解决方案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 冲突。

    【讨论】:

    • 哦,快,你是对的。我什至没有看到那里的身份证。这种方法是一种很好的方法。谢谢!
    • +1:很好的答案。你知道如何实现它吗?我正在尝试在 CI 中构建相同类型的东西,但我无法理解架构。
    • 很遗憾,我没有足够的网络开发经验来知道如何实际实现这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多