88

Redirect()和 有什么区别RedirectPermanent()。我读过一些文章,但我不明白什么时候必须使用Redirect()and RedirectPermanent()。你能举个例子吗?

4

3 回答 3

157

两者之间的基本区别在于RedirectPermanent向浏览器发送HTTP 301(永久移动)状态代码,而Redirect将发送HTTP 302状态代码。

RedirectPermanent如果资源已被永久移动并且在其以前的位置将不再可访问,则使用该资源。大多数浏览器会缓存此响应并自动执行重定向,而无需再次请求原始资源。

Redirect如果资源将来可能在同一位置 (URL) 可用,则使用此选项。

例子

假设您的系统中有用户。您还可以选择删除现有用户。您的网站具有/user/{userid}显示给定用户详细信息的资源。如果用户已被删除,您必须重定向到该/user/does-not-exist页面。在这种情况下:

如果用户永远不会再次被恢复,您应该使用RedirectPermanent这样浏览器可以在后续请求中直接转到/user/does-not-exist,即使 URL 指向/user/{userid}.

如果将来用户可能会恢复,您应该使用常规的Redirect.

于 2013-07-07T23:22:39.727 回答
17

RedirectPermanent是 301Redirect是 302 状态码

于 2013-07-07T23:21:39.270 回答
1

它们向浏览器发送不同的响应代码。301 是永久重定向,302 是临时重定向。最终效果是一样的,但是如果客户端想要索引链接(最常见的客户端将是搜索引擎),那么永久重定向会告诉客户端更新其记录以忽略旧链接并开始使用新链接. 临时重定向告诉客户端页面现在正在重定向,但不会从其索引数据库中删除旧链接

于 2016-12-22T06:12:06.760 回答