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

本文测试环境: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.php向b.php提交数据,然后b.php用不同的状态码来跳转请求到c.php。其中,b.php的代码存在变数,变数就是:三次实验的状态码不一致。状态码分别是:301/302/303/307。
不同状态码及c.php接收到的参数
苏南大叔使用不同的状态码,来进行实践。
301跳转:
302跳转:
303跳转:
下面的是307跳转的结果,比较神奇。和普通的跳转,是非常不一样的。
分析及解释
相关状态码解释为:
| 301 | Moved Permanently |
| 302 | Found |
| 303 | See Other |
| 307 | Temporary Redirect |
301跳和302跳在seo界经常提起,广大seo人民群众需要用301永久跳转来传递权重值。302和303基本上差不多,据说,303比302更明确于新的url必须用get来请求。- 而
307跳转就是最神奇的跳转了,它可以传递POST值!但是不传递GET值。
所以总结上来说,
- seo群众更喜欢
301跳。 - 程序员默认的情况,就是
302跳。 - 最神奇的
307跳,只在高级程序员那边使用。 303嘛,似乎无人提及,也许在被遗忘的角落吧。
更多解释
302
在php的header("locaion:")中,如果没有明确写明状态码的话,会默认是302跳转,也就是常说的临时跳转,在seo领域里面,302并不转移权重值。
303
HTTP 303 See Other 重定向状态码,通常作为 PUT 或 POST 操作的返回结果,它表示重定向链接指向的不是新上传的资源,而是另外一个页面,比如消息确认页面或上传进度页面。而请求重定向页面的方法要总是使用 GET。
304
304状态码,304状态码的解释时:Not Modified。这个状态码并不涉及任何的页面跳转,只是告诉浏览器,资源没有修改,使用缓存就好了,并且并不会返回任何响应主体,所以,304并不跳。
307
307跳转中,因为会转移_POST值,可以用于表单第三方表单验证,大家可以仔细体会体会。
结论
多读多看多想,每个状态码都蕴含着特别的含义,您了解这些状态码嘛?更多状态码的经验文字,请阅读苏南大叔的状态码相关文章。
111111111111
看下一下307是啥样的~
看一下什么样子呢
很棒,感谢
学习一下
想看看是什么呀的
相看看是什么呀的
看看shen.em
学习一下307
很不错
相看看是什么呀的
看看
不错的文章