Redirect()
和 有什么区别RedirectPermanent()
。我读过一些文章,但我不明白什么时候必须使用Redirect()
and RedirectPermanent()
。你能举个例子吗?
3 回答
两者之间的基本区别在于RedirectPermanent
向浏览器发送HTTP 301
(永久移动)状态代码,而Redirect
将发送HTTP 302
状态代码。
RedirectPermanent
如果资源已被永久移动并且在其以前的位置将不再可访问,则使用该资源。大多数浏览器会缓存此响应并自动执行重定向,而无需再次请求原始资源。
Redirect
如果资源将来可能在同一位置 (URL) 可用,则使用此选项。
例子
假设您的系统中有用户。您还可以选择删除现有用户。您的网站具有/user/{userid}
显示给定用户详细信息的资源。如果用户已被删除,您必须重定向到该/user/does-not-exist
页面。在这种情况下:
如果用户永远不会再次被恢复,您应该使用RedirectPermanent
这样浏览器可以在后续请求中直接转到/user/does-not-exist
,即使 URL 指向/user/{userid}
.
如果将来用户可能会恢复,您应该使用常规的Redirect
.
RedirectPermanent
是 301Redirect
是 302 状态码
它们向浏览器发送不同的响应代码。301 是永久重定向,302 是临时重定向。最终效果是一样的,但是如果客户端想要索引链接(最常见的客户端将是搜索引擎),那么永久重定向会告诉客户端更新其记录以忽略旧链接并开始使用新链接. 临时重定向告诉客户端页面现在正在重定向,但不会从其索引数据库中删除旧链接