空页而不是自定义tomcat错误页面

时间:2010-10-04 14:23:13

标签: tomcat custom-error-pages

我的设置:Apache 2.2 + Tomcat 6.0 @ Windows 2008 R2 64位

  • 静态网页:/
  • servlet:/ foo
  • tomcat和apache通过mod_jk连接
  • 404.jsp放在tomcat \ webapps \ ROOT

的Tomcat \ CONF \ web.xml中:

<error-page>
 <error-code>404</error-code>
 <location>/404.jsp</location>
</error-page>

阿帕奇\ CONF \额外\的httpd-ssl.conf中:

JkMount /foo/* worker1
JkMount /404.jsp worker1

当我打开https://...../404.jsp时,会显示我的自定义错误页面。 但是当我打开https://...../foo/nonexisting.html时,会显示一个空白页面。

如果我从web.xml中删除<error-page>...</error-page>代码并打开https://...../foo/nonexisting.html,则会显示tomcats自己的404。

任何提示?

7 个答案:

答案 0 :(得分:2)

Jkmount应该将上下文作为参数,例如:

JkMount /mycontext/* worker1

然后以这种方式访问​​页面:

https://mycontext/someservlet/

https://mycontext/foo/nonexisting.html 

答案 1 :(得分:1)

据我所见,无法通过置于ROOT中的错误页面处理webapps错误。我现在将404.jsp放在每个webapp(/foo/404.jsp,/bar/404.jsp,...)中,现在它可以工作了。我可以安全地删除ROOT中的404.jsp,但是如果删除/ foo或/ bar中的404.jsp,如果在webapp中出现404,则会提供空白页面。要么tomcat忽略“location”元素中的前导/,要么在“调用”webapp的路径中附加此元素的内容。

答案 2 :(得分:0)

注意:您需要确保您指定的页面不以数字开头(即:404.jsp)。这是因为,根据Java语法,您无法使用数字启动类名。

http://www.jguru.com/faq/view.jsp?EID=492774

希望有所帮助: - )

答案 3 :(得分:0)

如果加载404.jsp时工作正常,并且当tomcat实际尝试使用该页面处理404错误时显示空白页面,则可能意味着404.jsp的源代码中只有一个错误触发了使用errorData对象。

检查日志。我遇到了类似的空白页问题,结果证明我有一个incorrect taglib URL

修改

此外,JkMount不应该是必需的,因为tomcat已经生成了这些404(即它们不在Apache的范围内)。

答案 4 :(得分:0)

我也遇到了这个问题,结果证明我的错误页面位置是应用程序上下文根的名称。也就是说,

<error-page>
 <error-code>404</error-code>
 <location>/MyApp/404.jsp</location>
</error-page>

当然它应该是

<error-page>
 <error-code>404</error-code>
 <location>/404.jsp</location>
</error-page>

答案 5 :(得分:0)

我在运行静态Web项目时遇到过这个问题。我已经完成了以下实现,它对我有用。

在%CATALINA_HOME%/ conf / web.xml

中添加了以下行
    <error-page> 
    <error-code>404</error-code>
    <location>/error_404.html</location>
    </error-page>

答案 6 :(得分:-1)

它显示的确无法找到404页面,否则? 因为其他一些错误代码也可以使用400,401,403,500。 看看这个链接 http://docs.yahoo.com/docs/writeus/error.html

如果您在web.xml文件中添加了任何其他错误代码。 希望这会有所帮助。 快乐的编码...