UrlRewriteFilter正在更改我的Web应用程序的Context-Path

时间:2011-04-11 12:23:33

标签: url-rewriting struts tomcat

我在context / myapp下配置了我的Web应用程序(使用Java Struts) - 所以我的web-app URL以这样的http://test.mydomain.com/myapp/

开头

由于我们支持多种数据模型,因此我使用UrlRewriteFilter来提供干净的URL。例如:假设我有两种不同类型的数据需要向我的用户显示 - 一个是酒店列表,另一个是医院列表 - 取决于登录用户的类型。但是,这两个模型都是服务的通过一个名为commonView.jsp的公共JSP页面。

如果用户对酒店感兴趣,那么网址就是 ... / MyApp的/ commonView.do?类型=酒店

对于医院来说,URL也是如此 ... / MyApp的/ commonView.doβ型=医院

现在,我不想向用户显示这个奇怪的名字,上面写着'commonView.do'。因此,我使用UrlRewriteFilter来提供干净的URL。见下文。

<rule match-type="regex">
    <from>^/view/([A-Z,a-z,0-9]+)$</from>
    <to>/commonView.do?type=$1</to>
</rule>

以上规则在浏览器中显示http://test.mydomain.com/myapp/view/hotels,但在内部将请求转发给commonView.do?type=hotels。同样适用于医院。

现在我的问题是,一旦执行此规则,我的上下文路径开始看起来像/ myapp / view而不仅仅是/ myapp。因此,我的所有css,js,图像等都消失了 - 因为现在我的网络应用程序开始在/ myapp / view下找到它们而不是/ myapp。

我该如何解决这个问题?如何避免更改上下文路径并仍然可以使用UrlRewriteFilter提供干净的URL?

2 个答案:

答案 0 :(得分:1)

添加此内容 页面顶部的<BASE href="http://test.mydomain.com/myapp/">

答案 1 :(得分:0)

<rule match-type="regex">
    <note>Serve these folders from the filesystem</note>
    <from>/(css|img|js|manifest)/(.*)</from>
    <to last="true">/$1/$2</to>
</rule>