我在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?
答案 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>