<补充-1> Url Rewrite && Url redirect

在配置Nginx时经常会看到url rewrite规则,这时就不得不区分redirect和rewrite的区别。

1.URL Redirect (重定向)
通过 重定向,浏览器知道页面位置发生变化,从而 改变地址栏显示的地址
1) 通过重定向,搜索引擎意识到页面被移动了,从而更新搜索引擎索引,将原来失效的链接从搜索结果中移除。
2) 临时重定向(R=302)和永久重定向(R=301)都是亲搜索引擎的,是SEO(Search Engine Optimization)的重要技术。
3) Redirect是 浏览器和服务器发生两次请求,也就是服务器命令客户端“去访问某个页面”
4) redirect的URL需要传送到客户端。
5) redirect是从一个地址跳转到另一个地址

比如 301重定向的处理流程:
1. User lands on original URL (用户用原始url登陆)
2. Using code, mode_rewrite, etc. the 301 redirects URL to the new one, literally changing the URL that is displayed in the browser from the old to the new (使用mode_rewrite等指令使原始url重定向到新的url,明显的变化就是浏览器上原始url变成了新的url)
3. URL Rewrite process begins again(接着就是url rewrite的流程了,这个流程后面介绍)


2. URL Rewrite (url 重写)
重写,不仅仅可以实现redirect在url上的重定向,还可以直接重写请求到实际的文件以及更多附加功能。

1) rewrite的URL只是在服务器端
2) Rewrite规则是服务器内部的一个接管,在服务器内部告诉“某个页面请帮我处理这个用户的请求”, 浏览器和服务器只发生一次交互,浏览器不知道是该页面做的响应,浏览器只是向服务器发出一个请求。
3) URL重写用于将页面映射到 本站另一页面,若重写到 另一网络主机(域名),则按重定向处理。
4) rewrite是把一个地址重写成另一个地址。地址栏不跳转(若是重写到另一网络主机则也可能跳转)。相当于给另一个地址加了一个别名一样。

所以根据重写的地址跨域还是不跨域,rewrite可以做内部,也可以做外部的重写,rewrite可以让url变化,也可以让url不变化。

上述的例子就像用户去买手机,缺货时的两种处理:让用户自己去其他地方买(Redirect);公司从其他的地方调货(Rewrite)。

3. rewirte和redirect对比


参考资料:
http://19920309.blog.51cto.com/8277196/1334449
http://moz.com/blog/url-rewrites-and-301-redirects-how-does-it-all-work
http://weblogs.asp.net/owscott/rewrite-vs-redirect-what-s-the-difference

猜你喜欢

转载自zoroeye.iteye.com/blog/2159602
今日推荐