Tomcat 7 尾随斜杠问题与 webapps

13 tomcat tomcat6

最近我将我的 tomcat 服务器从 6.x 版本升级到了最新的 7.x 版本。

我想出了一点麻烦,希望得到帮助。

我有一个应用程序调用 MyApp

在 tomcat6 上,当我访问http://www.example.com/MyApp/page/ 时, 我通常会得到想要的结果。

现在,在 tomcat7 上,访问相同的确切 url(带有尾部斜杠)我收到错误:“资源不可用”,因为 tomcat 认为 /MyApp/page/ 是一个完整的 webapp 名称而不是请求名称MyApp webapp 下的页面。

我需要在我的 url 末尾加上斜杠,否则我会收到错误:“HTTP 状态 405 - 不支持请求方法‘GET’”,这没关系,因为我真的不允许“页面”请求的 GET 方法.

如果有人知道如何告诉 tomcat 在现有 webapp 路径之后的斜杠不应该假设将它重定向到新的 webapp 调用整个“字符串”并像在 tomcat6 上那样处理请求,那就太好了!

Tim*_*unk 0

检查您的欢迎文件列表..接下来是猜测...

我相信问题的本质是当 Tomcat 出现 / 时 - 它有几个选项 - 迭代欢迎文件列表 - 没有任何东西 - 显示目录列表(如果启用)

有趣的地方就开始了……很多人想使用 *.do 来处理像 struts 这样的东西。所以他们希望index.do成为主页。或者也常见的是index.jsp,其中*.jsp 映射到JspServlet。

这就是事情变得有趣的地方。假设您的欢迎文件是index.jsp、index.do。

Tomcat (IIRC) 所做的是首先迭代欢迎文件列表以查找该名称的资源。

然后它将进行第二遍寻找匹配的映射。因此,如果在欢迎列表中指定了index.jsp,并且映射了*.jsp。然后tomcat会尝试转发到index.jsp,你会得到404。

所以我猜测您有一个 servlet 映射和欢迎文件重叠。并且该 servlet 的行为不支持 GET。(因此是 405)