从URL中删除应用程序名称和servlet映射

时间:2016-12-20 13:25:46

标签: apache tomcat redirect servlets

我正在使用Apache httpd并将请求代理到我部署应用程序WAR的Tomcat服务器。

假设我有应用程序App和servlet URL模式/servlet1以及域名abc.com。因此,当我将ROOT.war servlet的请求转发给/App/servlet1时,我的网址会更改为abc.com/App/servlet1,但我希望abc.com能够提供更好的用户体验。

我知道我可以通过将App重命名为ROOT.war来实现此目的,但这对我来说不是一个选项,因为我们已经为另一个应用程序提供了ROOT.war

是否可以将abc.com/App/servlet1重写为除abc.com以外的ROOT.war?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:2)

执行此操作的方法是将ROOTApp个应用程序合并到一个应用程序中。

没有servlet包含能够检测某些 URL何时应该转到一个应用程序而其他人应该在没有明显映射策略的情况下转到另一个应用程序。 servlet规范使用URL前缀(上下文路径)来区分已部署的Web应用程序:除非它们实际上是同一个应用程序,否则不能将它们混合在一起。

有非常非常丑陋的方法可以做到这一点,但这些技术最终会引发一大堆令人头疼的问题,并且只是为了解决听起来像是一种毫无意义的要求的问题:让网址变得漂亮。没有人关心URL的美妙程度。确保example.com将用户带到正确的位置,并且不用担心其他任何用户。