1

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

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

如果用户要更改他们的用户名(每个用户唯一)或他们博客文章的标题,则必须更改 URL 才能更新。例如,如果上述用户更改了她的用户名,则 URL 可能如下所示:

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

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

4

1 回答 1

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

如果您更改用户名,则 ID ( 2961662) 将保留并且 slug 将更改:

  1. https://stackoverflow.com/users/2961662/psidhu
  2. https://stackoverflow.com/users/2961662/john-doe

这也允许拥有相同用户名的用户(如果你想允许的话):

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

缺点

这不是最好的URL 设计

  • /users/2961662/psidhu不如美丽/users/psidhu
  • 记住具有如此神秘 ID 的 URL 很难(呃)
  • 这样的 ID 没有意义,所以理想情况下它不会是 URL 的一部分

选择

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

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

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

于 2016-04-07T19:01:08.227 回答