Apache和Resin组合时UrlRewriteFilter失效的解决方法,,文章来自 http://
分享于 点击 42337 次 点评:35
Apache和Resin组合时UrlRewriteFilter失效的解决方法,,文章来自 http://
文章来自 http://www.javatang.com/
目前在Spring3.0的官方example中都使用UrlRewriteFilter来做伪静态,单独运行在Resin等JavaEEWeb容器中的时候一切都OK,但是一旦与Apache一起组合的时候总是会出现404或403错误,当然UrlRewriteFilter所设定的规则 也无效。
造成这种现象的原因是因为在默认情况下,静态的资源均由Apache进行处理,而jsp或者由web.xml所映射的servlet均交给resin进行处理。如果web项目没有使用UrlRewriteFilter则一切OK,但是使用了UrlRewriteFilter之后,由servlet所映射的地址并不是/即所有资源了,而是类似/app/这样的设置。也就是说,用户所请求的资源首先由Apache判断一下,然后再由选择的交给Resin,最后才执行UrlRewriteFilter的规则。
知道了原因,解决的方法也就出来了,只要告诉Apache将所有的资源都交由Resin来处理就可以了,可以使用Resin的servlet-mapping方法进行配置,配置如下
<servlet-mapping url-pattern='/*' servlet-name='plugin_match'/><!-- 其中plugin_match是Resin内置的servlet, 按照resin官方的解释就是Resin告诉Apache将所有的 符合url-pattern规则要求的请求都发送给它进行处理。 --><!-- 因为servlet-mapping是resin特有的,所以建议将此也放在resin-web.xml中, 然后放在项目中的WEB-INF目录下:--><web-app xmlns="<a href="http://caucho.com/ns/resin">http://caucho.com/ns/resin" xmlns:resin="<a href="http://caucho.com/ns/resin/core">http://caucho.com/ns/resin/core"> <servlet-mapping url-pattern='/*' servlet-name='plugin_match'/></web-app>//该片段来自于http://byrx.net
用户点评