使用301/303/307重定向进行动态短网址

时间:2012-01-26 00:26:59

标签: http redirect http-status-code-301 url-shortener http-status-code-307

我们正在实施一个短网址服务,其中重定向目标将每天更改。网址将由移动设备访问,并始终是GET请求。我试图了解哪种是最适合工作的300型重定向。

AFAIK大多数网址缩短服务使用301重定向(永久移动)。但是,根据规格,303(见其他)和307(暂时移动)重定向似乎是为我们的案例设计的......

  • 303/307是否支持301?规范说它们只在HTTP 1.1中实现 - 这个拼写有什么限制?
  • 选择301 vs 303/307是否有任何实际的缓存或性能影响。
  • 对于GET请求,有没有理由选择303 vs 307?
  • 有没有理由使用302重定向?
  • 还有其他需要考虑的事项吗?

2 个答案:

答案 0 :(得分:5)

  

303/307是否也支持301?规范说它们只在HTTP 1.1中实现 - 这个拼写有什么限制?

是/无。

  

选择301 vs 303/307是否有任何实际的缓存或性能影响。

我不这么认为。

  

对于GET请求,有没有理由选择303 vs 307?

303的语义与307不同。如果请求的资源是“其他地方”,则303不是正确的答案。

  

有没有理由使用302重定向?

据我所知,并非如此。它具有与307相同的语义,但UA可能会将POST请求重写为GET。

  

还有其他需要考虑的事项吗?

请参阅http://greenbytes.de/tech/webdav/draft-ietf-httpbis-p2-semantics-18.html#status.3xx

答案 1 :(得分:1)

网址缩短服务使用301(永久)的原因是:

  • 它不保存目标网址的网页排名。
  • 目标网址不会更改(一旦你告诉bit.ly/url1重定向到example.com/url1,你就无法修改它以重定向到example.com/url2。)

所有302,303和307都是临时重定向,根本不做这项工作。除非您想要更改目标网址,否则可以使用302.例如example.com/contact重定向到example.com/temp/contact但您打算稍后用example.com/v2/contact替换后者。