Url Rewrite Filter 是一个基于java的url rewirte开源项目,功能类似Apache中的rewrite模块。其实,Url Rewrite让apache来负责才是最好的选择,因为mod_rewrite已经很成熟了,功能或者效率上都更好用,apache已足以使urlrewrite的功能透明了,对于多个应用使用起来更方便。这篇文章介绍的urlrewrite filter只是给那些不打算使用apache的应用提供了另外一种选择。
一、主要功能
a) 实现url地址的伪静态化
例如可以把http://localhost:8080/myindex.do?method=listIndex&user=ezplus的请求重定向或转发到http://localhost:8080/blog/ezplus,这样做就避免了url中出现?&之类的符号,而且页面伪静态化之后也增加了被搜索引擎找到的概率。
b) 根据配置文件自动转化页面上的连接
在写页面的时候程序员不用关心在页面中出现的url地址将被如何伪静态化,例如,程序员还是可以在写页面的时候使用http://localhost:8080/myindex.do?method=listIndex&user=ezplus,通过在urlrewrite.xml中配置<outbound-rule></outbound-rule>,既可以实现页面url地址自动转化为伪静态化后的地址,用户在查看页面源码的时候原http://localhost:8080/blog/ezplus将被自动替换为http://localhost:8080/blog/ezplus
二、安装使用
1.下载地址:http://tuckey.org/urlrewrite/#download
下载的文件(Binary的)结构简单:urlrewrite.xml和lib文件夹下的一个.jar
2.jar文件放入项目的lib库中,urlrewrite.xml和web.xml放在一块。修改web.xml,添加以下配置:
<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>
</filter-mapping>
我觉得/*这样的通配,并不符合我的预期,我只想对部分路径进行URL的重写,/*可能会造成我想象不到的或者是许微不足道的性能浪费.我把它改成了我需要的:
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/member/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>UrlRewriteFilter</filter-name>
<url-pattern>/article/*</url-pattern>
</filter-mapping>
等...
3.urlrewriter.xml的配置
先提一下urlrewriter.xml中原有的几个例子:
<rule>
<from>/some/old/page.html</from>
<to type="redirect">/very/new/page.html</to>
</rule>
/**从一个文件到另一个文件的转发 如果不使用正则表达式,这样的配置真是把简单的问题复杂化了**/
<rule>
<from>/some/olddir/(.*)</from>
<to type="redirect">/very/newdir/$1</to>
</rule>
/**重定向到一个目录 我觉得实际应用中可能用得不多**/
<rule>
<from>/products/([0-9]+)</from>
<to>/products/index.jsp?product_id=$1</to>
</rule>
/**这种是最常用的,通过正则对请求路径进行匹配,并把分组作为参数 ,实际转到到<to>的路径。<to type="redirect">和<to type="forword">有什么区别呢?<to type="redirect">是链接到外部的网站,<to type="forword">是链接到站内的实际地址。**/
说明一下,如果你在Filter配置中使用了所有路径通配符<url-pattern>/*</url-pattern>
在配置urlrewriter.xml中的<from>时,随便怎么写路径无所谓,但若象我一样使用了
<url-pattern>/memeber/*</url-pattern>,那么在<from>标签中也要写上/memeber/(你的正则分组)
以便在访问与<from>匹配的路径时,Filter能够执行
最后一点,不得不说,举个例子
<rule>
<from>/member/(.*)</from>
<to>/html/member.do?username=$1</to>
</rule>
<rule>
<from>/article/(.*)</from>
<to>/html/article.do?articleid=$1</to>
</rule>
<rule>
<from>/member/article/(.*)</from>
<to>/html/another/article.do?articleid=$1</to>
</rule>
当你访问http://localhost/member/article/1111 会显示哪一个页面呢?
结果应该不是意想中的/html/another/article.do?articleid=1111.
我想大概是因为<from>中的路径,相当于filter中的<url-pattern>
相关推荐
Url Rewrite 实现jsp页面伪静态化_凌风_.doc
描 述:UrlReWrite(Url重写或伪静态)完美示例源码 UrlReWrite(Url重写或伪静态)完美示例源码,已利用ActionlessForm解决原始地址form回传的问题 例如:/products.aspx?category=books 转换为/products/Books....
UrlReWrite(Url重写或伪静态)UrlReWrite(Url重写或伪静态)
java urlrewrite 实现伪静态化 demo源码 http://www.cnblogs.com/liujun0930/archive/2011/12/05/2276553.html
通过UrlRewrite组件实现url重写,可以优化url,对搜索引擎友好,被收录质量高等好处。
本例把它命名为:UrlRewrite,在创建的时候,选择勾选“Add JSTL libraries to WEB-INF/lib folder ”(注:因为项目中会用到jstl 核心标签库),然后再把urlrewrite-2.6.0.jar导入到项目Bulid Path路径下,最后再加入...
Discuz! X2 配置URL伪静态Rewrite规则,里面详细讲解了apache服务器下 Discuz! X2 配置URL伪静态Rewrite规则和IIS下得Discuz! X2 配置URL伪静态Rewrite规则
asp net UrlReWrite Url重写或伪静态 完美示例源码
用urlrewrite实现的asp.net 网站的伪静态
ISAPI_Rewrite,ISAPI_Rewrite用来实现伪静态,将动态网页通过重写URL的方法实现去掉动态网页的参数!它的行为是像Apache的mod_Rewrite ,但专为微软的Internet信息服务( IIS )。 IIS配置相当简单,配置好之后就有...
Rewrite实现网站伪静态 http://www.aygqw.com
Rewrite 在iis下 url 伪静态 Rewrite 在iis下 url 伪静态
详细介绍Apache开启伪静态 Rewrite url重写规则
IIS中使用的伪静态组件 Url Rewrite伪静态组件
JAVA实现URL rewrite伪静态_.docx
使用URL Rewrite实现网站的伪静态实例,包括urlrewritefilter-4.0.3.jar
如何在Apache 服务器下配置URL 静态化的 Rewrite 规则.docx
asp伪静态化/asp静态化/ASPURL重写/IIS Rewrite/RewriteRule/