urlRewriter是利用过滤器实现URL转换的,适用于任何Web应用服务器(如Resin,Orion,Tomcat等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。
使用步骤:
1、首先要在网上下载 urlRewriter.jar(建议最新版本 官网下载地址:tuckey.org/urlrewrite/) 。
2、配置web.xml,其实就是配置一个Filter:
这个包使用正则表达式仿照了apache rewrite的做法。而实现原理也是很明晰的:filter,forward,redirect机制组合
在web.xml配置一个UrlRewriteFilter,拦截所有进来的请求,对服务要求的请求进行rewrite。
<filter>
<filter-name>UrlRewriteFilter</filter-name>
<filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class>
<!-- (这个可以不写,是配置UrlRewriter日志的配置,级别定成WARN) -->
<init-param>
<param-name>logLevel</param-name>
<param-value>WARN</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
3、在WEB-INF 目录下新建一个urlrewrite.xml(名称一定要正确)文件内容如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 3.2//EN"
"http://tuckey.org/res/dtds/urlrewrite3.2.dtd">
<urlrewrite>
<!-- 楼盘搜索 -->
<rule>
<from>/Searchfield/search.html</from>
<to>/pages/Searchfield/search.htm</to>
</rule>
<!-- 带有两个参数 -->
<rule>
<from>/Searchfield/([_0-9]+)/([_0-9]+).html</from>
<to>/pages/Searchfield/search.htm?x_groupsid=$1&keys=$2</to>
</rule>
<!-- 用户登录 测试urlRewrite -->
<rule>
<from>/Department/([_0-9]+).html</from>
<to>/pages/Department/userlogin.do?deptid=$1&pwd=gpb</to>
</rule>
</urlrewrite>
其中‘$1’ 代表第一个参数 ‘$2’ 代表第二个参数
配置通用的rule:
<rule>
<note>
- 这是一个通用请求url rewrite
- 将请求forword url加上“.do”的处理器上。
- 例:
- 请求 http://{domain}/user/login 将被forward到 http://{domain}/user/login.do
- 请求 http://{domain}/user/login/ 将被forward到 http://{domain}/user/login.do
- 请求 http://{domain}/user/logout/ 将被forward到 http://{domain}/user/logout.do
</note>
<from>^/([_a-zA-Z]+[_0-9a-zA-Z-/]*[_0-9a-zA-Z]+)/?$</from>
<to type="forward">/$1.do</to>
</rule>