如果示例网站包含用户创建的博客帖子,这将是构建每个帖子的URL的简单方法:
www.example.com/jane-smith/my-first-blog-post
如果用户要更改其用户名(每个用户唯一)或其博客帖子的标题,则必须更改URL以进行更新。例如,如果上述用户更改了用户名,则URL可能如此:
www.example.com/jane-wilson/my-first-blog-post
现在出现一个问题,好像人们试图使用旧的URL一样,它就行不通了。如果不删除更改用户名或博客文章名称的功能,如何避免或解决现有网站的这种情况?
答案 0 :(得分:0)
一种常见的方法是包含永不更改的唯一ID(对于用户和帖子,在您的情况下),然后301重定向到当前/规范变体。
这就是Stack Overflow正在做的事情。
如果您更改了问题的标题,则ID(36463097
)将保留,slug将会更改:
https://stackoverflow.com/questions/36463097/handling-urls-that-change
https://stackoverflow.com/questions/36463097/handling-urls-that-might-change
如果您更改了用户名,则ID(2961662
)将保留,并且slug将更改:
https://stackoverflow.com/users/2961662/psidhu
https://stackoverflow.com/users/2961662/john-doe
这也允许用户具有相同的用户名(如果您想允许):
http://example.com/23/john-doe
http://example.com/42/john-doe
这不是最好的URL design:
/users/2961662/psidhu
不如/users/psidhu
跟踪所有更改并阻止曾经注册的用户名。因此,如果我以john
开头,然后将我的名字更改为john-doe
,则其他任何人都无法注册john
。
这是电子邮件地址的良好做法,在我看来,对于允许与用户直接通信的每项服务,它也应该是一种很好的做法。如果用户收到针对该用户名的前任所有者的消息,则这是一个严重的问题;如果用户没有得到他们喜欢的用户名,因为之前有人注册过它,那最多就是烦人的。
因此,对于每个用户,您可以跟踪以前的用户名,以及每个帖子以前的标题,然后301-重定向到当前/规范的用户名。