tuckey urlrewritefilter的配置

最近在写个小东西,用到了urlrewrite,使用的是tuckey 的urlrewirefilter

下面就说说urlrewritefilter的配置,首先在web.xml中配置filter,定义要过滤的url,注意filter的位置。(官网上面也有的,可以点上面的链接看。)

urlrewritefilter默认会加载urlwrite.xml,所以在WEB-INF目录下创建urlrewrite.xml,使用下面的配置

就可以了。具体的语法可以参考https://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.0/index.html

最开始配置使用的是4.0版本的dtd,即

发现访问静态资源全部找不到,后台打印的url全部被加了前缀 mpabo, 比如访问的链接是 /css/css.css 会变成 /mpabo/css/css.css

应该是

这规则生效导致的。后来尝试使用3.0的版本,竟然没问题。然后对比了下3.0的dtd和4.0的dtd,发现有个属性不一致,就是to的last, 3.0 默认是 true,4.0 默认为false, 又看了4.0文档的语法

last (optional)  :   false (default) The rest of the “rules” will be processed if this one succeeds.   (true No more “rules” will be processed if this one is a match.)

由于

这规则在最后面,所以即使前面的规则匹配了,但还是被覆盖了。所以解决方法就是改为3.0的dtd,或者在增加last=”true”。看个人喜好了。

再重新去看了下3.0的文档发现last写的竟然也是 false(default),但dtd的定义里面是true,坑人啊。

附3.0的dtd, to的定义: