链接到我之前的问题,我想重写http://www.demo.com/context/user.do?action=home
到http://www.demo.com
,并被建议尝试URLRewriteFilter。
以下代码
<rule>
<from>^/$</from>
<to type="redirect">%{context-path}/user.do?action=home</to>
</rule>
没有删除上下文名称,也就是说,我仍然需要从http://www.demo.com/context/
考虑到官方网站中所有的例子都是基于上下文,RewriteFilter真的是解决初始问题的正确工具吗?
你需要将web应用部署到上下文根目录。将WAR重命名为ROOT.war
(并删除Tomcat的webapps中的默认/ROOT
文件夹,如果有的话),以便Tomcat将其自动部署到根目录,或编辑webapp的context.xml
的<Context>
元素以指定path=""
而不是path="/context"
。
重写过滤器只运行在webapp级别,而不是Tomcat级别,所以试图用它来改变webapp的上下文路径(它本身是在Tomcat级别配置的)是没有意义的。
参见:
- Tomcat6→如何将项目放入根文件夹?