2011-04-11 82 views
2

我已根據上下文/ MyApp的配置我的web應用程序(使用Java的Struts)我的Web應用程序的上下文路徑 - 所以我的web應用程序的URL像這樣的東西http://test.mydomain.com/myapp/UrlRewriteFilter正在改變

我使用UrlRewriteFilter開始由於我們支持多種數據模型,因此可以提供乾淨的URL。例如:假設我有兩種不同的數據類型,根據登錄用戶的類型,我需要顯示我的用戶 - 一個是賓館列表,另一個是醫院列表。但是,兩種模式都會提供通過一個名爲commonView.jsp的普通JSP頁面。

如果用戶感興趣,這家網址想 .../MYAPP/commonView.do?類型=酒店

同樣,對於醫院,網址是 .../MYAPP/commonView。做?type =醫院

現在,我不想讓用戶看到這個奇怪的名字,看起來像'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
<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> 
1

只是在你的

頁面的頭中添加該 <BASE href="http://test.mydomain.com/myapp/">