ProxyPass、带有资源链接的 ServletContext 名称未按预期工作
ProxyPass, ServletContext name with resource links not working as expected
好的,我有一个 spring MVC 网络应用程序打包为 www-coolapp.war 并部署到 tomcat 服务器。我有一个域名 www.coolap.com,我想将所有来自 localhost:8080/www-coolapp 的请求映射到 www.coolap.com。在我的 apache 配置中,我在虚拟主机中使用了以下内容
ProxyRequests off
ProxyPreserveHost on
ProxyPass / http://localhost:8080/www-coolapp/
ProxyPassReverse / http://localhost:8080/www-coolapp/
ProxyPassReverseCookiePath /www-coolapp /
除资源目录中的文件外,这基本上可以正常工作。在我的 spring 上下文中,我将资源配置为
<mvc:resources mapping="/resources/**" location="/resources/" />
在我的 JSP 文件中,我使用 <c:url>
声明链接,它将 servlet 上下文名称添加到 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">
部署到服务器这些转化为
<link href="/www-coolapp/resources/css/bootstrap.min.css" rel="stylesheet">
<link href="/www-coolapp/resources/css/font-awesome.min.css" rel="stylesheet">
无法正确呈现,即链接到资源中的文件(css、图像、javascript 等)是基于路径前面的 servlet 上下文名称的断开链接。
有没有办法修改代理设置或重写 url 以使其工作而不更改 webapp 中的所有链接?
知道了 - 根据 jstl 文档,添加 context
属性会覆盖 servlet 上下文名称,现在链接可以使用 ProxyPass 配置正确解析。
<a href="<c:url context="/" value="..."/>">Lint Text</a>
可能应该在发帖前睡一觉...
好的,我有一个 spring MVC 网络应用程序打包为 www-coolapp.war 并部署到 tomcat 服务器。我有一个域名 www.coolap.com,我想将所有来自 localhost:8080/www-coolapp 的请求映射到 www.coolap.com。在我的 apache 配置中,我在虚拟主机中使用了以下内容
ProxyRequests off
ProxyPreserveHost on
ProxyPass / http://localhost:8080/www-coolapp/
ProxyPassReverse / http://localhost:8080/www-coolapp/
ProxyPassReverseCookiePath /www-coolapp /
除资源目录中的文件外,这基本上可以正常工作。在我的 spring 上下文中,我将资源配置为
<mvc:resources mapping="/resources/**" location="/resources/" />
在我的 JSP 文件中,我使用 <c:url>
声明链接,它将 servlet 上下文名称添加到 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">
部署到服务器这些转化为
<link href="/www-coolapp/resources/css/bootstrap.min.css" rel="stylesheet">
<link href="/www-coolapp/resources/css/font-awesome.min.css" rel="stylesheet">
无法正确呈现,即链接到资源中的文件(css、图像、javascript 等)是基于路径前面的 servlet 上下文名称的断开链接。
有没有办法修改代理设置或重写 url 以使其工作而不更改 webapp 中的所有链接?
知道了 - 根据 jstl 文档,添加 context
属性会覆盖 servlet 上下文名称,现在链接可以使用 ProxyPass 配置正确解析。
<a href="<c:url context="/" value="..."/>">Lint Text</a>
可能应该在发帖前睡一觉...