【问题标题】:UrlRewriteFilter is changing the Context-Path of my Web ApplicationUrlRewriteFilter 正在更改我的 Web 应用程序的上下文路径
【发布时间】:2011-08-03 00:48:22
【问题描述】:

我已经在上下文 /myapp 下配置了我的 Web 应用程序(使用 Java Struts) - 所以我的 Web 应用程序 URL 以类似 http://test.mydomain.com/myapp/ 的内容开头

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

如果用户对酒店感兴趣,URL 会喜欢 .../myapp/commonView.do?type=hotels

对于医院来说,网址也是 .../myapp/commonView.do?type=hospitals

现在,我不想向用户显示“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?

【问题讨论】:

    标签: url-rewriting struts tomcat


    【解决方案1】:

    添加这个 &lt;BASE href="http://test.mydomain.com/myapp/"&gt; 在您页面的头部

    【讨论】:

      【解决方案2】:
      <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>
      

      【讨论】:

        猜你喜欢
        • 2016-03-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-04
        • 1970-01-01
        • 1970-01-01
        • 2013-07-16
        • 2014-04-24
        • 2011-01-05
        相关资源
        最近更新 更多