本文介绍对比一下:http的几个常用跳转状态码:301/302,以及相对不是太常见的303/307跳转。本文的实验对象用php来实现跳转。当然,其它语言也可以实现类似效果。通过实验对比,苏南大叔来具体验证一下:301/302/303/307到底有什么样的区别。

苏南大叔:301/302/303/307跳转区别对比最佳实践 - php-302-307
301/302/303/307跳转区别对比最佳实践(图5-1)

本文测试环境:mac/chrome/php

实验代码

a.php代码如下:

<form action="b.php?a1=v1" method="post">
    <input type="text" name="a2" value="v2" />
    <input type="submit" value="submit"/>
</form>

b.php代码如下:

header("Location:c.php",true,301);
//header("Location:c.php",true,302);
//header("Location:c.php",true,303);
//header("Location:c.php",true,307);

c.php代码如下:

print_r($_GET);
print_r($_POST);

实验的过程就是:a.phpb.php提交数据,然后b.php用不同的状态码来跳转请求到c.php。其中,b.php的代码存在变数,变数就是:三次实验的状态码不一致。状态码分别是:301/302/303/307

不同状态码及c.php接收到的参数

苏南大叔使用不同的状态码,来进行实践。

301跳转:

苏南大叔:301/302/303/307跳转区别对比最佳实践 - 301
301/302/303/307跳转区别对比最佳实践(图5-2)

302跳转:

苏南大叔:301/302/303/307跳转区别对比最佳实践 - 302
301/302/303/307跳转区别对比最佳实践(图5-3)

303跳转:

苏南大叔:301/302/303/307跳转区别对比最佳实践 - 303
301/302/303/307跳转区别对比最佳实践(图5-4)

下面的是307跳转的结果,比较神奇。和普通的跳转,是非常不一样的。

newsn.net:这里是【评论】可见内容

分析及解释

相关状态码解释为:

301Moved Permanently
302Found
303See Other
307Temporary Redirect
  • 301跳和302跳在seo界经常提起,广大seo人民群众需要用301永久跳转来传递权重值。
  • 302303基本上差不多,据说,303302更明确于新的url必须用get来请求。
  • 307跳转就时最神奇的跳转了,它可以传递POST值!但是不传递GET值。

所以总结上来说,

  • seo群众更喜欢301跳。
  • 程序员默认的情况,就是302跳。
  • 最神奇的307跳,只在高级程序员那边使用。
  • 303嘛,似乎无人提及,也许在被遗忘的角落吧。

更多解释

302

phpheader("locaion:")中,如果没有明确写明状态码的话,会默认是302跳转,也就是常说的临时跳转,在seo领域里面,302并不转移权重值。

303

HTTP 303 See Other 重定向状态码,通常作为 PUT 或 POST 操作的返回结果,它表示重定向链接指向的不是新上传的资源,而是另外一个页面,比如消息确认页面或上传进度页面。而请求重定向页面的方法要总是使用 GET。

304

304状态码,304状态码的解释时:Not Modified。这个状态码并不涉及任何的页面跳转,只是告诉浏览器,资源没有修改,使用缓存就好了,并且并不会返回任何响应主体,所以,304并不跳。

307

307跳转中,因为会转移_POST值,可以用于表单第三方表单验证,大家可以仔细体会体会。

结论

多读多看多想,每个状态码都蕴含着特别的含义,您了解这些状态码嘛?更多状态码的经验文字,请阅读苏南大叔的状态码相关文章。

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。