欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Apache和Resin组合时UrlRewriteFilter失效的解决方法,,文章来自 http://

来源: javaer 分享于  点击 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
相关栏目:

用户点评