在HTTP协议中有两个常用的状态码:
- 301 永久性重定向
- 302 临时性重定向
这两个都是用于重定向请求的状态码。从字面上看一个是永久性重定向,另外一个是临时性重定向。对于大部分人来说这都很容易理解。但是在使用上,经常出现混用的情况,之所以有混用,原因有两种:- 觉得既然都能达到重定向的目的,两种用那种都行
- 未能确定到底需要永久性重定向还是临时性重定向
一般情况下,把需要永久性重定向的请求用临时性重定向状态码返回是可以接受的。但是反过来是不行的,这是因为浏览器端对着两个状态码的处理是有区别的。
对应301状态码,如果浏览器端已经把对应请求的URI保存为书签,浏览器会把重定向响应中的location字段中的URI重新保存为书签。但是对于302状态码,浏览器会认为这是个临时的重定向,不需要更新浏览器的书签。
大部分情况下,我们都是在nginx配置rewrite语句来配置重定向。
如果需要配置为302(临时性重定向),可以配置为rewrite ^/(.*)$ https://mtest.abcd.cn redirect;
。 如果需要配置为永久性重定向, 则可以配置为:
rewrite ^/(.*)$ https://app.abcd.cn/$1 permanent;
网友评论