6.1 Rewrite功能介绍
1.Rewrite简介
Rewrite用于实现URL的重写。
地址重写:实现了地址的标准化,即我们输入 xx.cn 和 xx.com时都能够指向同一个页面,这个过程就是地址重写或是说地址重定向。
2.重定向与转发的区别
-
地址栏不同
转发:客户端地址栏不改变
重定向:地址栏变为服务器选择的地址
-
网络请求次数不同
转发:整个过程只有一次网络请求;
重定向:一次地址重写一般会产生两次网络请求;
-
发生范围不同
转发:一般在同一站点项目内
重定向:无限制
-
路径名表示
转发:可不用显示全路径名
重定向:必须使用完整的全路径名
-
客户端请求的request属性携带
转发:可携带request信息到新页面
重定向:不可以
-
速率:转发 > 重定向
6.2 rewrite的使用
1.rewrite指令
-
说明:重定向改变URI,一般搭配正则表达式使用。
-
语法:
rewrite 原地址 重定向地址 [last | break | redirect]- last :将此次重定向的地址代替原地址,并且接下来的重定向语句不再执行
- break:将重定向的URI作为新的URI,并且继续执行下面的重定向语句
- redirect:将重定向RUI返回给客户端,状态码为302:表明是临时重定向URI,使用在重定向地址不为 http:// 或 https:// 开头的情况。
- permanent:重定向的URI返回给客户端,状态码为301:永久重定向
-
案例
- 作用域:server块、location块
2.URI 和URL
-
URL:我们浏览器访问网站时输入的就是URL :
http://baidu.com -
URI:具体定位,但定位的具体内容不要
3.rewrite_log指令
rewrite_log on|off :配置是否开URL重写日志(默认为off关闭)