处理更改的URL

时间:2016-04-06 21:58:48

标签: url url-design

如果示例网站包含用户创建的博客帖子,这将是构建每个帖子的URL的简单方法:

www.example.com/jane-smith/my-first-blog-post

如果用户要更改其用户名(每个用户唯一)或其博客帖子的标题,则必须更改URL以进行更新。例如,如果上述用户更改了用户名,则URL可能如此:

www.example.com/jane-wilson/my-first-blog-post

现在出现一个问题,好像人们试图使用旧的URL一样,它就行不通了。如果不删除更改用户名或博客文章名称的功能,如何避免或解决现有网站的这种情况?

1 个答案:

答案 0 :(得分:0)

一种常见的方法是包含永不更改的唯一ID(对于用户和帖子,在您的情况下),然后301重定向到当前/规范变体。

实施例

这就是Stack Overflow正在做的事情。

如果您更改了问题的标题,则ID(36463097)将保留,slug将会更改:

  1. https://stackoverflow.com/questions/36463097/handling-urls-that-change
  2. https://stackoverflow.com/questions/36463097/handling-urls-that-might-change
  3. 如果您更改了用户名,则ID(2961662)将保留,并且slug将更改:

    1. https://stackoverflow.com/users/2961662/psidhu
    2. https://stackoverflow.com/users/2961662/john-doe
    3. 这也允许用户具有相同的用户名(如果您想允许):

      • http://example.com/23/john-doe
      • http://example.com/42/john-doe

      缺点

      这不是最好的URL design

      • /users/2961662/psidhu不如/users/psidhu
      • 那么漂亮
      • 记住带有这种神秘ID的网址很难(呃)
      • 这样的ID没有意义,所以理想情况下它不会成为URL的一部分

      替代

      跟踪所有更改并阻止曾经注册的用户名。因此,如果我以john开头,然后将我的名字更改为john-doe,则其他任何人都无法注册john

      这是电子邮件地址的良好做法,在我看来,对于允许与用户直接通信的每项服务,它也应该是一种很好的做法。如果用户收到针对该用户名的前任所有者的消息,则这是一个严重的问题;如果用户没有得到他们喜欢的用户名,因为之前有人注册过它,那最多就是烦人的。

      因此,对于每个用户,您可以跟踪以前的用户名,以及每个帖子以前的标题,然后301-重定向到当前/规范的用户名。