301和302重定向的区别

详细来说,301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址。

对于微信的浏览器来说,我的平台可能会因为用户举报而被封域名,如果代理在他们的公众号菜单放了这个被封的域名,那么就要通知每个代理把老域名给换掉,非常麻烦。这个时候可以在底部菜单栏绑定跳板域名A,用户点击之后,实际上是跳转到了域名B,如过域名B被封,直接在NGINX中把B替换成域名C即可,这样就省去了代理替换域名的麻烦,但是要注意的一点是,域名跳转不能使用301重定向,因为301重定向在浏览器上会有缓存,如果是之前的老用户,点击菜单栏的域名A,会直接跳转到原来的B,这样就起不到效果了,所以一定要使用302跳转,经测试,使用302跳转后,每次换域名,微信上的URL都会变化。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 80;
listen [::]:80;
server_name dm.A.com;
#### 禁止缓存
add_header Last-Modified $date_gmt;
add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
add_header Pragma no-cache;
if_modified_since off;
expires off;
etag off;
# 302 跳转,客户端仍然保留原来的地址A,301 跳转,则会保留跳转后的地址B。如果使用301跳转,跳转后的网址被封后,换了网址C,微信依然会访问网址B,从而显示的是被封界面
return 302 http://dm.B.com$request_uri;
}