就项目下线,新项目的地址和就项目不同,为了是之前的url能指向新的URL,使用Url Rewrite Filter进行了处理。
UrlRewrite就是我们通常说的地址重写,用户得到的全部都是经过处理后的URL地址。
一:提高安全性,可以有效的避免一些参数名、ID等完全暴露在用户面前,如果用户随便乱输的话,不符合规则的话直接会返回个404或错误页面,这比直接返回500或一大堆服务器错误信息要好的多
二:美化URL,去除了那些比如*.do之类的后缀名、长长的参数串等,可以自己组织精简更能反映访问模块内容的URL
三:更有利于搜索引擎的收入,通过对URL的一些优化,可以使搜索引擎更好的识别与收录网站的信息
1、首先,在项目中引入jar包:urlrewrite.jar 最新版本是4.0.3
2、在web.xml中加入filter(需放在struts的filter前)
<filter> <filter-name>UrlRewriteFilter</filter-name> <filter-class>org.tuckey.web.filters.urlrewrite.UrlRewriteFilter</filter-class> </filter> <filter-mapping> <filter-name>UrlRewriteFilter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>
dispatcher可忽略
3、UrlRewriteFilter默认去/WEB-INF目录下读取urlrewrite.xml
因此,在/WEB-INF新建urlrewrite.xml(注意全部小写)
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE urlrewrite PUBLIC "-//tuckey.org//DTD UrlRewrite 4.0//EN" "http://www.tuckey.org/res/dtds/urlrewrite4.0.dtd"> <urlrewrite> <rule> <from>^/page/(.*)$</from> <to type="redirect">/page/$1.action</to> </rule> </urlrewrite>
这样我访问的:http://localhost:8080/page/test
则跳转到: http://localhost:8080/page/test.jsp
这样使用urlrewrite可以很好的隐藏真实地址,也可以实现新旧链接的转换。
urlrewrite网站:http://tuckey.org/urlrewrite/