目前在Spring3.0的官方example中都使用UrlRewriteFilter来做伪静态,单独运行在Resin等JavaEE
Web容器中的时候一切都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
=
"
http://caucho.com/ns/resin
"
-
xmlns:resin
=
"
http://caucho.com/ns/resin/core
"
>
-
<
servlet-mapping
url-pattern
='/*'
servlet-name
='
plugin_match
'
/>
-
</
web-app
>
参考资料:
Apache的UrlRewrite和Resin的配置问题
Resin官方对servlet-mapping的说明
分享到:
相关推荐
最新的urlrewritefilter最新的urlrewritefilter最新的urlrewritefilter
UrlRewriteFilter架包和文档
urlrewritefilter实现伪静态urlrewritefilter实现伪静态urlrewritefilter实现伪静态
urlrewritefilter-4.0.3.jar
软件简介 这是urlrewritefilter-...rule结点中from的规则默认使用的是正则表达式来匹配的,当用户访问服务器时的URL会与该配置相比较,如果符合规则就会按照下面to结点中的配置对其进行跳转,其默认是forward跳转。
urlrewritefilter-4.0.4 下载
jsp,过滤器,urlrewritefilter
urlrewritefilter-3.2.0 struts伪静态 jsp伪静态
urlrewritefilter 2.6源码
解压后直接是urlrewritefilter-4.0.3.jar包,放入Web应用的WEB-INF\lib目录下即可。
urlrewritefilter-3.1.0.zip,包含urlrewritefilter-3.1.0.jar和urlrewrite.xml
使用URL Rewrite实现网站的伪静态实例,包括urlrewritefilter-4.0.3.jar
实现网站伪静态301重定向,urlrewritefilter-4.0.3.jar
urlrewritefilter-3.1.0.jar
urlrewritefilter-3.2.0.zipurlrewritefilter-3.2.0.zip
urlrewritefilter-4.0.4.jar 这个jar包之前自己也是找了很久,这次自己上传一个,有需要的朋友可以下载使用