10.9 Rewrite原理
Rewrite
- Rewrite 通过正则表达式的使用改变URI(相对),可以同时存在一个或者多个指令,按照顺序依次对URL进行匹配和处理
-
- Rewrite 接受到的URI不包含host地址
- Rewrite介绍
-
- Rewrite是Nginx服务器提供的一个重要基本功能,其在Web服务器产品中几乎是必备的功能,用于实现URL的重写
-
- URL的重写是非常有用的功能,
比如它可以让我们在改变网站结构后,无需要求客户端用户修改原来的书签,也无需其他网站修改对我们网站的友情链接,
- 地址重写 和 地址转发
-
- 地址重写 实际上是为了解决地址标准化
-
- 地址标准化
-
- 举个例子,比如在访问百度首页的时候,我们在地址中可以输入www.baidu.com,也可以输入
- www5.baidu.com www.baidu.com.cn www.baidu.cn baidu.com
-
他们都能准确的指向www.baidu.com
- 如果我们ping就会发现地址不同,我们可以在命令行测试下
- 在客户端看来,baidu首页同时对应了几个地址,实际上baidu服务器是在不同的地址中选择了确定的一个,www.baidu.com,进而返回服务器响应的,
- 这个过程就是地址标准化的过程,baidu.com这个地址在服务器中被改编为www.baidu.com的过程就是地址重定向的过程
- 地址转发(反向代理)
-
- 转发的概念最初和网页的访问并没有太大关系,它是指网络数据传输过程中数据分组到达路由器后该设备通过检查分组地址并将数据转到相邻局域网上的过程
- 后来该概念被用在了网页访问中,就出现了地址转发这一说法,是指一个域名指到另一个已有站点的过程
- 地址重写和地址转发的几点区别
-
- 地址转发后客户端浏览器地址栏的地址的显示是不改变的,而地址重写后客户端浏览器地址栏中的地址改编为服务器选择确定的地址
- 在一次地址转发整个过程中,只产生一次网络请求,而一次地址重写一般会产生两次请求
- 地址转发一般发生在同一站点的项目内,而地址重写没有该限制
- 地址转发到的页面可以不用全路径名表示,而地址重写到的页面必须使用完整的路径名表示
- 地址转发过程中,可以将客户端请求的request范围内属性传递给新的页面,但地址重写不可以
- 地址转发的速度较地址重写快