2016-12-12 124 views
0

好吧我有一個彈簧MVC Web應用程序打包成www-coolapp.war並部署到tomcat服務器。我有一個域名www.coolap.com,我想將所有來自localhost:8080/www-coolapp的請求映射到www.coolap.com。在我的Apache配置我正在使用一個虛擬主機ProxyPass,ServletContext名稱與資源鏈接不能按預期工作

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上下文名稱的網址開頭的鏈接。

<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"> 

了基於servlet上下文不呈現在正確的資源,即鏈接到文件(CSS,圖片,JavaScript等)是斷開的鏈接名稱被預先添加到路徑中。

有沒有辦法修改代理設置或重寫url以使其工作而不更改webapp中的所有鏈接?

回答

0

明白了 - 根據jstl文檔添加一個context屬性覆蓋servlet上下文名稱,現在鏈接可以正確解析ProxyPass配置。

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

也許應該在這一個發佈前已經睡...