ProxyPass,ServletContext名称,资源链接未按预期工作

时间:2016-12-12 02:06:02

标签: java spring proxypass

好的,我有一个spring MVC web app打包为www-coolapp.war并部署到tomcat服务器。我有一个域名www.coolap.com,我想将localhost:8080 / www-coolapp的所有请求映射到www.coolap.com。在我的apache配置中,我在虚拟主机中使用以下内容

groupid

除了资源目录中的文件外,这基本上有效。在我的春天上下文中,我将资源配置为

ProxyRequests                   off
ProxyPreserveHost               on
ProxyPass                       / http://localhost:8080/www-coolapp/
ProxyPassReverse                / http://localhost:8080/www-coolapp/
ProxyPassReverseCookiePath      /www-coolapp /

在我的JSP文件中,我使用<mvc:resources mapping="/resources/**" location="/resources/" /> 声明了链接,这些链接将servlet上下文名称添加到URL的开头。

<c:url>

部署到服务器后,这些转换为

<link href="<c:url value="/resources/css/bootstrap.min.css"/>" rel="stylesheet">
<link href="<c:url value="/resources/css/font-awesome.min.css"/>" rel="stylesheet">

无法正确呈现,即资源(css,图像,javascript等)中文件的链接是基于前缀为路径的servlet上下文名称的断开链接。

有没有办法修改代理设置或重写网址以使其工作而不更改webapp中的所有链接?

1 个答案:

答案 0 :(得分:0)

得到它 - 根据jstl doc添加context属性覆盖servlet上下文名称,现在链接使用ProxyPass配置正确解析。

<a href="<c:url context="/" value="..."/>">Lint Text</a>

在张贴之前可能应该睡在这个......