301与302的区别

Posted zkpython

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了301与302的区别相关的知识,希望对你有一定的参考价值。

 

定义如下:

301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个URI之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。


302 Found 请求的资源现在临时从不同的URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。

字面上的区别就是301是永久重定向,而302是临时重定向。 当然,他们之间也是有共同点的,就是用户都可以看到url替换为了一个新的,然后发出请求。

 

 

301适合永久重定向

  301比较常用的场景是使用域名跳转。

  比如,我们访问 http://www.baidu.com 会跳转到 https://www.baidu.com,发送请求之后,就会返回301状态码,然后返回一个location,提示新的地址,浏览器就会拿着这个新的地址去访问。 

  注意: 301请求是可以缓存的, 即通过看status code,可以发现后面写着from cache。

     或者你把你的网页的名称从php修改为了html,这个过程中,也会发生永久重定向。

 

 

302用来做临时跳转

  比如未登陆的用户访问用户中心重定向到登录页面。

  访问404页面会重新定向到首页。 

##niginx 301/302配置

rewrite后面接上permenent就代表301跳

//把来自veryyoung.me的请求301跳到 www.veryyoung.me
if ($host != veryyoung.me) 
    rewrite ^/(.*)$ http://www.veryyoung.me/$1 permanent;

 

接上redirect就代表302跳

//把来自veryyoung.me的请求302跳到 www.veryyoung.me
if ($host != veryyoung.me) 
    rewrite ^/(.*)$ http://www.veryyoung.me/$1 redirect;

 

 

301重定向和302重定向的区别

  301永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替

  而临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI

  

以上是关于301与302的区别的主要内容,如果未能解决你的问题,请参考以下文章

HTTP返回码中301与302的区别

HTTP返回码中301与302的区别 (转载)

HTTP返回码中301与302的区别(转)

301与302的区别

301和302 Http状态有啥区别?

转:HTTP 301 跳转和302跳转的区别