1、301 和 302 区别:
301和302第一次请求都一样, 第一次请求旧域名,请求里有host信息,请求的域名信息;旧域名响应信息,包含跳转信息,应该访问新域名;客户端再发起新的请求,访问新域名,新域名响应要访问的页面。
301 第二次, 只通过一次请求就访问到新域名,相当于浏览器直接告诉客户端, 直接访问新域名,而302 还会先访问旧域名,302 依旧是发送两次请求。
301 和302 浏览器域名 会发生改变。
2、return
也是跳转;效果上用户体验一样。
位置:server、location、if
www.jd.com/oldboy.html 匹配上了---> return 301 www.jx.com/oldboy.html
www.jd.com/oldboy.html 匹配上了---> return 200 ‘ok’ # 页面显示ok
3、页面跳转实践操作
3.1、last 和 break 区别示例
server {
listen 80;
server_name rewrite.oldboy.com;
root /html;
index index.html;
location ~ ^/break/ {
rewrite ^/break/ /test/ break;
}
location ~ ^/last/ {
rewrite ^/last/ /test/ last;
}
location /test/ {
default_type application/json;
return 200 'ok';
}
}
break:一旦跳转完毕,默认停止后续操作(没有相应信息) 不会再地址栏显示跳转页面地址
last: 一旦跳转完毕,会继续访