2013-07-07 74 views

回答

102

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

使用RedirectPermanent如果资源已被永久删除,将不再是先前的位置访问。大多数浏览器都会缓存此响应并自动执行重定向,而无需再次请求原始资源。

使用Redirect如果资源可能会在未来的同一位置(URL)可用。

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

如果用户将永远再次恢复,你应该使用RedirectPermanent这样浏览器就可以直接去/user/does-not-exist在后续请求,即使该URL指向/user/{userid}

如果用户可以是未删除在未来的某个时候,你应该使用常规Redirect

+3

http://stackoverflow.com/questions/1393280/http-redirect-301-vs-302-permanent-vs-temporary – user1778606

+0

谢谢,这很好的答案意图。它帮助我! – IFrizy

9

RedirectPermanent是301和Redirect是302状态码

+7

仅供参考,浏览器可以记住301和从不打,如果他们又渴望的原始URL的客户端,而302表示如果重定向仍然存在,他们应该每次重新检查一次。实际的实现当然可以变化,但是这背后的301和302 –

0

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