如何使用Tomcat在其URL中隐藏应用程序上下文?

时间:2011-03-02 09:53:50

标签: tomcat apache2 mod-jk

我在Tomcat中运行了许多应用程序。每个人都有自己的背景。我使用Apache HTTP Server和mod_jk将它们全部链接到不同的域名(请参阅此问题的更多详细信息:How to mount context-referenced Tomcat application with mod_jk?)。工作正常,但是当应用程序生成他们的网页时,所有URL仍然有他们的上下文:

  1. http://www.example.com/转到http://www.example.com:8080/my-context/
  2. http://www.example.com:8080/my-context/生成一个网页
  3. 网页包含网址/my-context/some-page.jsf
  4. 我希望在第三步中看到/some-page.jsf。需要注意的是,我无法更改应用程序内部。它们由第三方提供。我所能做的就是配置Tomcat或Apache HTTP Server。

1 个答案:

答案 0 :(得分:4)

这有点复杂,但您可以使用网址重写器,例如tuckey 重写出站URL,删除/ my-context前缀(“出站URL”我指的是在webapp内生成的URL)。在http://urlrewritefilter.googlecode.com/svn/trunk/src/doc/manual/3.2/index.html查看元素的文档。

要使用您的webapp进行tuckey工作,您需要向应用程序的web.xml添加声明。从技术上讲,这意味着“修改应用程序”,但它是微创的。如果由于某种原因你甚至无法触摸web.xml(不知道为什么),我似乎想起了一种在Tomcat的webapp上外部强制使用过滤器(而不是阀门)的方法,但这种情况还有很长的路要走。