在配置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
- 大小: 66.8 KB
- 大小: 25.1 KB
分享到:
相关推荐
<to type="redirect">/new/$1</to> </rule> ``` **集成与使用** 在Maven项目中集成URLRewrite,首先需要在`pom.xml`中添加依赖: ```xml <dependency> <groupId>org.tuckey</groupId> <artifactId>...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>info</param-value> </init-param> </filter> <filter-...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> <init-param> <param-...
<to type="redirect">https://example.com/$1</to> </rule> </urlrewrite> ``` 在这个例子中,第一个规则将任何访问"/old-page.html"的请求重定向到"/new-page"。第二个规则则检查请求URI是否以"/secure/"开头,...
<to type="redirect">/new/$1</to> </rule> ``` **应用场景** 1. **SEO优化**:将动态参数URL转换为静态化URL,提高搜索引擎的抓取效率。 2. **友好的URL**:使URL更易读,提升用户体验。 3. **隐藏真实路径**:...
<to>/new/static-url/$1</to> </rule> </urlrewrite> ``` 上述配置表示将所有以`/old/dynamic-url/`开头的URL重定向到`/new/static-url/`,其中`(.*)`是捕获组,用于保留原URL的部分路径。 5. **常见规则**: ...
id=$1</to> </rule> </urlrewrite> ``` 这里的规则表示将形如`/数字.html`的URL重定向至`/index.jsp?id=数字`。其中: - `<from>` 表示客户端请求的URL模式,采用正则表达式匹配。 - `<to>` 指定实际处理请求的...
<to>/$1</to> </rule> ``` 5. **条件匹配** 我们还可以根据特定的请求参数或HTTP头信息来决定是否执行重写。例如,只对GET请求进行URL重写: ```xml <rule> <condition type="request-method">GET</...
articleId=$1</to> </rule> </urlrewrite> ``` 在这个例子中,`<from>`元素定义了匹配的URL模式,`<to>`元素则指定了重定向后的URL。`$1`是一个反向引用,对应于`<from>`中的第一个括号内匹配的内容。 4. **...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>WARN</param-value> </init-param> <init-param> <param-...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>DEBUG</param-value> </init-param> </filter> <filter-...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>...
<to type="redirect">/newpath/$1</to> </rule> ``` 这个规则会将所有以`/oldpath/`开头的请求重定向到`/newpath/`下对应的部分。 总结 URLRewrite作为Java Web开发中的一个重要工具,通过灵活的配置和规则引擎,...
1. **安装**:URLRewrite组件通常作为IIS扩展通过Web Platform Installer进行安装,也可以手动下载并安装相应的MSI文件。 2. **配置**:配置主要在`web.config`文件中进行,通过添加`<system.webServer>`节点下的`...
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>...
ASP.NET的URL重写(URLRewrite)是一个强大的功能,它允许开发者隐藏实际的Web页面地址,提供更友好的、可读性强的URL,从而提高用户体验和搜索引擎优化(SEO)。在本文中,我们将深入探讨ASP.NET URL重写的核心概念...
- 在`urlrewrite.xml`中,你可以定义一系列规则,如`<rule>`标签,每个规则包含`<from>`(匹配原始URL)和`<to>`(转换后的URL)等属性。 3. **基本规则类型**: - `Rewrite`: 这是最基本的URL重写,将一个URL...
UrlRewrite.dll是微软IIS(Internet Information Services)服务器中的一个关键组件,主要负责URL重写功能。在网站开发和管理中,它扮演着至关重要的角色,尤其在优化搜索引擎优化(SEO)、实现友好的URL结构以及...