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
很不错
相看看是什么呀的
看看
不错的文章