301重定向PHP:我是否需要明确告诉它它是301?

时间:2011-12-15 09:13:16

标签: php http-status-code-301

这个应该很容易......

我是否需要明确告诉PHP我要进行301重定向?像这样......

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/");
?>

通常情况下,我会先放弃第一个陈述,然后再做...

<?php
header("Location: http://www.example.com/");
?>

第二个例子实际上是302重定向吗?

1 个答案:

答案 0 :(得分:6)

引用the fine manual

  

第二个特例是“Location:”标题。它不仅将此标头发送回浏览器,而且还向浏览器返回REDIRECT(302)状态代码,除非已经设置了201或3xx状态代码。

最可能的原因是302 Found是非指定用途的重定向。您可以使用四个3xx重定向标头。

  • 301 Moved Permanently永久重定向,例如用于保持与旧URL的兼容性。因此,许多浏览器将缓存重定向位置,并且不会再次检查。
  • 303 See Other是重定向,例如对于后重定向 - 获取操作 - 请注意,它仅定义为HTTP / 1.1
  • 307 Temporary Redirect的意思是“是的,它通常在这里,但现在,资源在其他地方” - 这可能不是你想要的意思:你总是想在这一点上重定向。再次,在HTTP / 1.1
  • 中定义
  • 最后,302 Found是一个未指定用途的重定向 - 在上述不适用时使用,或者在需要HTTP / 1.0兼容性时使用(2011年仍然是一个问题?);因此,它被用作默认值。