简介
UrlRewriteFilter is a Java Web Filter for any J2EE compliant web
application server (such as Resin, Orion or Tomcat), which allows you to rewrite
URLs before they get to your code. It is a very powerful tool just like Apache's
mod_rewrite.
urlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。
使用
urlRewriter是利用过滤器实现URL转换的,具体使用方法如下:
1. 首先要在网上下载 urlRewriter.jar(建议最新版本 官网下载地址:tuckey.org/urlrewrite/) 。
2. 配置web.xml,其实就是配置一个Filter。
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<init-param>
(这个可以不写,是配置UrlRewriter日志的配置,级别定成WARN)
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/*</url-pattern>
<! - - 下两项可以不写 - ->
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
</filter-mapping>
3、在WEB-INF 目录下新建一个urlrewrite.xml(名称一定要正确)文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite
PUBLIC "-//tuckey.org//DTD UrlRewrite 3.1//EN"
"urlrewrite3.1.dtd">
<!-- Configuration file for UrlRewriteFilter
http://tuckey.org/urlrewrite/ -->
<urlrewrite
use-query-string="true">
<rule>
<note>robots</note>
<from>
^/robots.txt$
</from>
<to type="permanent-redirect">%{context-path}/static/robots.txt</to>
</rule>
<rule match-type="regex"> (这里有两个选项 regex 和
wildcard,即正则匹配和通配符匹配)
<note>the content.do url redirect
阅读无章节</note>
<from>^/content.do\?nid=([_0-9a-zA-Z]+)$</from>
<to
type="permanent-redirect">%{context-path}/content/$1</to>
</rule>
</urlrewrite>
红体字一会再做解释。这两条主要是把网站的Robots和小Logo做重写向,红体是表示 301永久重定向。
例如
倾国小说网(www.qgreading.com)的robots.txt 应用上面的配置 www.qgreading.com/robots.txt ---> www.qgreading.com/static/robots.txt
另外,我们也可以充分利用condition这个属性来区分浏览器或者终端进行条件跳转,最简单的,如果一个站即有WEB,也有WAP,我们可以利用User-Agent进行筛选,跳到不同的页面,或者设置不同的属性。一些WAP在区分手机型号时也很有用。
<rule>
<condition name=”user-agent”>Mozilla/3\.0 (compatible;
AvantGo .*)</condition>
<from>.*</from>
<set
name=”client”>AvantGo</set>
</rule>
<rule>
<condition
name=”user-agent”>UP\.Browser/3.*SC03
.*</condition>
<from>.*</from>
<set
name=”client”>Samsung SCH-6100</set>
</rule>
配置
只需要增加Rule规则
<rule>
<note>这里添加描述信息</note>
<from>这里写需要转变的URL,一般用正则匹配</from>
<to type="跳转的类型">转换后的URL路径</to>
</rule>
贴一下跳转的类型,一般不好找的哦,呵呵 ……^_^
forward:默认. 请求匹配这个<rule />的所有<condition />,
并且URL使用内部跳转到”to”指定的地址(注意, 这里forward 到的URL 必须和UrlRewriteFilter 位于同一个容器中)。状态码
302。临时重定向。
redirect:用Response.Redirect实现,请求匹配所有<condition
/>和这个<rule />的<from />, 通知客户端跳转到<to
/>指定地址,状态码应该是302。
permanent-redirect: 永久重定向。状态码301。相当于做了以下事情
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);.
response.setHeader(“Location”, [<to />指定的值]);
passthrough: 和forward 相同,具体区别我也不清楚。
temporary-redirect:临时重定向。状态码302。 相当于做了以下事情
response.setStatus(HttpServletResponse. SC_MOVED_TEMPORARILY);
response.setHeader(“Location”, [<to />指定的值]);
再补充一些配置时候的问题和小技巧:
1. 在配置中如果要使用”&”, 用&
2. 简单起见, 给<from />的配置前面和后面分别加上^, $, 这两个是正则表达式中的强制开始和结尾标志;
3. 如果使用<outbound-rule>要记得代码中的url都是编码过的;
4. contex 是非常重要的, 如果有一个应用的context 是”/myapp”,
并且你的请求是”/myapp/somefolder/somepage.jsp”, 容器交给UrlRewriteFilter 的url
会是”/somefolder/somepage.jsp”, 这可能难以理解,
但是在你的<rule>和<condition>中不要包含context path, 它是容器负责处理的.
5. 正则表达式非常复杂灵活, 请阅读java.util.regex.Pattern中的java正则介绍。如果觉得正则难以理解,
可以使用通配符方式。
6. 应用通配符,通配符匹配引擎可以替代正则表达式, 在<condition>和<rule>中设置match-type
是wildcard
用以开启支持通配符.(或者设置default-match-type)
例如:
/big/url/*匹配/big/url/abc.html但是不匹配/big/url/abc/dir/或/big/url/abc/
/big/url/**匹配/big/url/abc.html,
/big/url/abc/dir/和/big/url/abc/
也可以和正则的替换一样, 每个*代表一个参数,
在<set>和<to>中用$N的方式使用
7. <to />可以是null, 意义为: 如果匹配请求不再继续, 相当于没有调用chain.doFilter
分享到:
相关推荐
Java URLRewrite是一个非常有用的库,它主要...总之,Java URLRewrite是一个强大的工具,可以帮助开发者实现URL重写和管理,提高网站的可维护性和用户体验。正确理解和使用它可以为你的Java Web应用带来极大的便利。
为了实现URL重写功能,我们需要在`web.xml`中配置URL Rewrite Filter,并在`urlrewrite.xml`中定义重写规则。 **1. `web.xml` 配置:** ```xml <filter-name>UrlRewriteFilter <filter-class>org.tuckey.web....
在这个"java urlrewrite 实现伪静态化 demo源码"中,我们可以深入理解如何使用URLRewrite框架来转化动态URL为更加友好的静态形式。 URLRewrite的核心概念是规则配置,通过定义一系列规则,可以将带有参数的动态URL...
现在对urlrewrite-3.2的源码进行了修改,使它能够支持多文件和通配符的形式加载自定义配置文件,即可以进行如下的配置: <param-name>confPath <param-value>/WEB-INF/urlrewrite/urlrewrite.xml /urlrewrite_*....
在本文中,我们将深入探讨URLRewrite的配置和使用方法。 首先,为什么要使用URLRewrite?通常有三个主要原因: 1. **搜索引擎友好**:搜索引擎更倾向于抓取简洁、有意义的URL,URL重写可以使得动态参数化的URL变得...
URLRewrite 是一个功能强大的URL重写和转换工具,适用于Java环境。它基于Apache的Tuckey项目,为Web应用程序提供了类似于Apache HTTP服务器的mod_rewrite模块的功能。在3.2.0这个版本中,开发者可以期待更稳定、更...
在web.xml中配置UrlRewriteFilter,意味着我们需要声明一个过滤器条目,指定它的类名(`org.tuckey.web.filters.urlrewrite.UrlRewriteFilter`)以及配置文件的位置(通常是在<context-param>`中指定的`urlrewrite....
以上只是URLRewrite配置的一些基本示例,实际上它的规则配置非常灵活,可以满足各种复杂的URL处理需求。在实践中,可以根据实际项目需求编写更具体的规则,以达到理想的效果。 在提供的压缩包文件中,"urlrewrite...
**URLRewrite配置** 在`urlrewrite.xml`中,规则通常由以下部分组成: 1. **Condition**:条件语句,如`<when>`标签,可以基于HTTP请求的各种属性(如请求方法、请求参数、请求URI等)进行匹配。 2. **Rule**:...
`urlrewrite`是一个流行的开源Java过滤器,它基于Apache的`Tuckey URLRewriteFilter`,用于在Servlet容器(如Tomcat)中实现URL重写规则。这个jar包提供了强大的配置灵活性,使得开发者能够轻松地定义各种重写规则。...
`urlrewrite`是一款优秀的Java库,专门用于处理URL重写,它使得动态网站能够展现静态化URL的效果,提升网站的专业性和可读性。`urlrewrite`框架兼容于Java Servlet容器,如Tomcat,Jetty等,广泛应用于JSP项目中。 ...
下面是一个简单的URLRewrite配置示例: ```xml ^/oldpath/(.*)$ <to type="redirect">/newpath/$1 ``` 这个规则会将所有以`/oldpath/`开头的请求重定向到`/newpath/`下对应的部分。 总结 URLRewrite作为Java ...
在使用`URLrewrite`时,我们需要创建一个名为`urlrewrite.xml`的配置文件,其中定义了各种重写规则。例如,以下规则将所有以“/article”开头的请求重定向至“/content/article”: ```xml ^/article/(.*)$ <to>...
### URLRewrite使用帮助文档 #### 一、URLRewriteFilter简介 URLRewriteFilter是一个功能强大的Web过滤器,主要用于实现URL的改写操作。它能够帮助开发者将动态URL转换成静态URL,这对于提高用户体验、优化SEO...
UrlRewrite是一个强大的URL重写工具,常用于Java Web应用中,尤其是与Struts2框架结合使用时,能够帮助开发者优化URL结构,提高网站的SEO友好性和用户体验。在这个"UrlRewrite例子"中,我们将深入探讨UrlRewrite的...
4. **UrlRewrite配置**: - **添加依赖**:首先,需要在项目中引入UrlRewriteFilter的依赖,如果是Maven项目,可以在pom.xml中添加对应的dependency。 ```xml <groupId>org.tuckey <artifactId>...
在本文中,我们将深入探讨如何使用`urlrewrite`框架来实现静态页面的转换,这是一个在J2EE环境中常用于URL重写和管理的工具。`urlrewrite`框架可以帮助开发者优化URL结构,使其更加用户友好,同时也便于搜索引擎优化...
在`urlrewrite_demo`项目中,可能包含了示例代码、配置文件和其他辅助资源,你可以通过查看这些文件来学习如何在实际项目中使用`URLRewriteFilter`。例如,项目可能包含了一个简单的Java控制器,展示了如何配合过滤...
总结起来,`URLRewrite 4.0.3`是一个强大的URL管理工具,它通过灵活的配置,可以帮助Java Web开发者优化URL结构,提高应用的可用性和安全性。理解并熟练运用其配置规则,将对Web应用的开发和维护带来极大的便利。