我的设置:Apache 2.2 + Tomcat 6.0 @ Windows 2008 R2 64位
的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。
任何提示?
答案 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文件中添加了任何其他错误代码。 希望这会有所帮助。 快乐的编码...