【问题标题】:Empty page instead of custom tomcat error page空页面而不是自定义tomcat错误页面
【发布时间】:2011-04-20 20:19:07
【问题描述】:

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

  • 静态网页:/
  • 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>

apache\conf\extra\httpd-ssl.conf:

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

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

如果我从 web.xml 中删除 &lt;error-page&gt;...&lt;/error-page&gt; 代码并打开 https://...../foo/nonexisting.html,则会显示 tomcats own 404。

有什么提示吗?

【问题讨论】:

    标签: tomcat custom-error-pages


    【解决方案1】:

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

    JkMount /mycontext/* worker1
    

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

    https://mycontext/someservlet/
    

    https://mycontext/foo/nonexisting.html 
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

        希望有所帮助:-)

        【讨论】:

        • 对于 404.jsp 会生成一个 _404_jsp.java 编译成 _404_jsp.class 调用没有问题,所以这不是原因
        【解决方案4】:

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

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

        编辑

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

        【讨论】:

          【解决方案5】:

          我也遇到了这个问题,结果发现罪魁祸首是我在错误页面位置输入了应用程序上下文根的名称。也就是说,

          <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>
          

          【讨论】:

          • 正如我几天前回答自己的那样:该位置已附加到 webapps 的路径中,因此当 webapp 中出现路径 /foo 的 404 时,将提供 /foo/{location} ,所以它似乎无法指定“全局”错误页面
          【解决方案6】:

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

          在 %CATALINA_HOME%/conf/web.xml 中添加以下行

              <error-page> 
              <error-code>404</error-code>
              <location>/error_404.html</location>
              </error-page>
          

          【讨论】:

            【解决方案7】:

            它显示的正是 404 页面未找到或其他? 因为其他一些错误代码也可用,例如 400,401,403,500。 看看这个链接 http://docs.yahoo.com/docs/writeus/error.html

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

            【讨论】:

            • ?你一定误解了我的问题
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2020-01-21
            • 2011-06-07
            • 2012-07-24
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多