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