哪个Http重定向状态代码使用?

时间:2009-11-12 11:36:53

标签: http rest

  • friendfeed.com使用302.
  • bit.ly使用301。

我决定使用303。

它们在浏览器支持方面的表现是否不同?

5 个答案:

答案 0 :(得分:4)

这取决于你的目的。

301说“这不是正确的网址,请查看其他地方并使用记住,其他网址更好;不要回到这里!“。

302说“这是你应该继续使用的正确网址,但实际上要将内容看到其他地方”。

303与302类似,但专门针对表单提交后的重定向。

如果您的目的是URL缩短,那么303并不真正相关。它仍然有效,但在正常的302上没有提供任何东西。对于URL缩短器,我会说301最合适,因为另一个URL是'真正的'。说302正在试图保留地址的所有权以及因使用它而导致的任何SEO动力:有点粗鲁,但也许你想要粗鲁。

答案 1 :(得分:2)

不同的状态代码具有不同的含义。 HTTP规范描述了它们:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

301 - 永久移动(并更改

302 - 在这里找到

303 - 在此处找到您的回复,但即使您刚开始使用POST,也要使用GET

例如,如果我们采用因某种原因而更改了URL的Atom订阅源(可能正在将其移至Amazon S3或其他内容)。给定301结果,供稿阅读器应注意供稿已移动并更新其订阅。给定302,它将从其新位置获取馈送,但是每次检查更新时,都会在原始服务器上查找原始URI。 (在这种情况下,303会很愚蠢。)

答案 2 :(得分:2)

阅读http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html了解答案。

10.3.2 301永久移动

已为所请求的资源分配了一个新的永久URI,并且此资源的任何将来的引用应该使用返回的URI之一。具有链接编辑功能的客户端应尽可能自动将对Request-URI的引用重新链接到服务器返回的一个或多个新引用。除非另有说明,否则此响应是可缓存的。

10.3.3 302找到了

请求的资源暂时驻留在不同的URI下。由于重定向有时可能会被更改,因此客户端应该继续使用Request-URI来处理将来的请求。如果由Cache-Control或Expires标头字段指示,则此响应仅可缓存。

答案 3 :(得分:1)

查看HTTP 1.1 Status Code definitions。不同的状态代码意味着不同的含义,因此鼓励不同的行为。尝试使用最符合您用例的代码。

答案 4 :(得分:0)

301用于永久重定向,如果这是您想要的,那么这是所有SEO专家推荐的。