2016-12-20 29 views
0

我正在使用Apache httpd和代理請求到部署應用程序WAR的Tomcat服務器。從URL中刪除應用程序名稱和servlet映射

比方說,我有應用程序App和servlet的URL模式/servlet1和域名abc.com。所以,當我將我的ROOT.war servlet的請求轉發到/App/servlet1時,我的URL更改爲abc.com/App/servlet1,但我更喜歡abc.com以獲得更好的用戶體驗。

我知道我可以通過將App重命名爲ROOT.war來做到這一點,但這不適合我,因爲我們已經爲另一個應用程序設置了ROOT.war

是否可以重寫abc.com/App/servlet1abc.com然後ROOT.war?如果是這樣,我該怎麼做?

+2

您如何知道請求是針對您的ROOT.war應用程序還是針對您的App.war應用程序,如果它們共享相同的URL路徑? –

+0

在我的情況下,請求域名到我們的ROOT.war,並且我們有單獨的戰爭來驗證一些事情。所以ROOT.war的一個servlet發送302重定向請求到App.war中的servlet。 App.war會執行所有驗證/檢查並將請求重定向回ROOT.war。所以在這種情況下,我不想在瀏覽器中向用戶顯示URL更改。它應該始終是abc.com。我對apache配置不是很熟悉,可能嗎? –

回答

2

執行此操作的方法是將ROOTApp應用程序合併到一個應用程序中。

沒有servlet包含將能夠檢測何時一些 URL應該去一個應用程序和其他應該去另一個沒有一些明顯的映射策略。 servlet規範使用強制使用URL前綴(上下文路徑)來區分已部署的Web應用程序:除非它們實際上是相同的應用程序,否則不能將它們混合在一起。

有非常非常醜陋的方法來做到這一點,但這些技術最終開放了很多令人頭疼的問題,並繼續黑客,以解決聽起來像一個無聊的要求:讓網址漂亮。沒有人在意網址的美麗程度。確保example.com將用戶帶到正確的地方,不用擔心其餘的任何問題。

相關問題