谈及这两个概念,通常会想到这应该是后端考虑的事情,但现在前端coder也需要关注这个,因为现在有个大前端概念,node中有这个概念,需要我们关注。
我们搞node中间层,会涉及到重写url和重定向,所有也就有了这两个。
rewrite和redirect的区别
redirect,即重定向。
rewrite,即重写,不仅仅可以实现redirect在url规则上的重定向,还可以直接重写请求到实际的文件以及更多附加功能。
重定向和URL重写的具体区别:
(1)关于重定向
通过重定向,浏览器知道页面位置发生变化,从而改变地址栏显示的地址。
通过重定向,搜索引擎意识到页面被移动了,从而更新搜索引擎索引,将原来失效的链接从搜索结果中移除。
临时重定向(R=302)和永久重定向(R=301)都是亲搜索引擎的,是SEO的重要技术。
redirect是浏览器和服务器发生两次请求,也就是服务器命令客户端“去访问某个页面”;
redirect的URL需要传送到客户端。
redirect是从一个地址跳转到另一个地址。
(2)关于重写
rewrite的URL只是在服务器端
rewrite则是服务器内部的一个接管,在服务器内部告诉“某个页面请帮我处理这个用户的请求”,浏览器和服务器只发生一次交互,浏览器不知道是该页面做的响应,浏览器只是向服务器发出一个请求。
URL重写用于将页面映射到本站另一页面,若重写到另一网络主机(域名),则按重定向处理。
rewrite是把一个地址重写成另一个地址。地址栏不跳转。相当于给另一个地址加了一个别名一样。
上述的例子就像用户去买手机,缺货时的两种处理:让用户自己去其他地方买(redirect);公司从其他的地方调货(rewrite)。