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

Gar*_*aar 4 php http-status-code-301

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

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

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

通常,我放弃第一个陈述,只是做...

<?php
header("Location: http://www.example.com/");
?>
Run Code Online (Sandbox Code Playgroud)

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

Pis*_*3.0 6

是.

引用精细手册:

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

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

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