赞
踩
tomcat默认情况下不带www的域名是不会跳转到带www的域名的,而且也无法像apache那样通过配置.htaccess来实现。如果想要把不带“www’的域名重定向到带”www”域名下,又不想写代码,可以使用UrlRewriteFilter来实现。
1.简介
urlRewriteFilter是一个用于改写URL的Web过滤器,类似于Apache的mod_rewrite。适用于任何Web应用服务器(如Tomcat,jboss,jetty,Resin,Orion等)。其典型应用就把动态URL静态化,便于搜索引擎爬虫抓取你的动态网页。
2.下载
下载UrlRewriteFilter
http://urlrewritefilter.googlecode.com/files/urlrewritefilter-4.0.3.jar
并放入tomcat项目中的 WEB-INF/lib下
3.配置tomcat
编辑WEB-INF/web.xml 在其它servlet mapping前加入
如果是集成到strust2中,那么位置很重要:
fileter-mapping这段需要在struts-prepare和struts-execute之间,而如果在放之前
中间已经有内容,可能需要放到已有内容最前面
4.添加跳转规则
在WEB-INF下新建urlrewite.xml文件,加入跳转规则
参考:
http://nematodes.org/martin/2010/02/04/301-permanent-redirect-with-tomcat-howto/
http://tuckey.org/urlrewrite/
手册:http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/4.0/index.html
以上是对于动态网站来说的,比如j2ee等;
而对于全是静态网站来说,tomcat如何实现以上配置呢?
因为纯静态网站 连web.xml文件都没有哪里能配置呢?
所以,需要考虑,tomcat的运行机制,处理静态项目,没有web.xml,则tomcat会使用自己的web.xml文件加载资源,所以,此时是加载urlrewritefilter.jar的好时机,然后再配置上filter-同上面一样,只是需要添加一个参数(指定了统一的urlrewrite.xml在静态项目的根目录下:project->ROOT->urlrewrite.xml(每个项目都是自己的域名)):
另外这种两个域名在tomcat的server.xml中还是需要配置好的,否则上面的配置不起作用
最后,如果在tomcat下既有动态项目又有一个静态项目,对于以上问题则
可以直接将urlrewritefilter-4.0.3.jar
放到tomcat下的lib库中,动态项目就不需要再添加改jar包了,他们共同使用就行,其他配置都不变。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。