我有一个通过mod-jk在Tomcat的Apache前端运行的struts应用程序。
我正在尝试使用mod-rewrite来清除由struts生成的一些操作url。
例如:重写(正常工作)
http://www.demo.com/context/user.do?action=aboutus
to http://www.demo.com/context/aboutus
使用RewriteRule ^/msn/aboutus$ /msn/user.do?action=aboutus [PT,L]
。
问题:我想重写http://www.demo.com/context/user.do?action=home
到http://www.demo.com
(主页)
我试过这个RewriteRule ^/$ /context/userdo?action=home [PT,L]
,这是行不通的。
FYI
所有的CSS,JS和链接是相对path。
DirectoryIndex在index.html上(它是否改变mod重写行为?)
Tomcat版本5.5,应用程序通过在public_html/context/
文件夹中展开WAR文件进行部署(多个部署)
URLrewritefilter不能帮助根据这个去除上下文名称。
日志
我厌倦了看看没有给出任何警告错误信息的日志文件(快照)。
(3) applying pattern '^/$' to uri '/context/jsps/images/abc.png' (3) applying pattern '^/abc/aboutus$' to uri '/abc/jsps/images/abc.png' (3) applying pattern '^/abc/home$' to uri '/abc/jsps/images/abc.png'
任何人都可以给我一些想法出了什么问题? 我该如何解决这个问题?
我认为在你改写^/$
情况下,mod_jk优先于mod_rewrite规则,因为你使用mod_jk来转发所有东西,例如: /*
从Apache到Tomcat。 我会建议在Tomcat应用程序中使用URLRewriteFilter来正确实现这些URL重写。