Tomcat自定义服务器级错误页面未显示

时间:2019-01-08 11:06:09

标签: tomcat error-handling http-status-code-404 tomcat9

我想使用自定义HTML错误页面设置tomcat 9,以便在发生错误或调用未映射到任何已部署Web应用程序的URL时,它不会显示任何详细信息。

这是服务器范围的错误页面,未绑定到任何已部署的特定Web应用。

还值得注意的是,我的tomcat实例没有ROOT webapp:

# ll
total 4
lrwxrwxrwx. 1 tomcat tomcat   27 Jan  7 15:37 mywebapp -> /var/webapps/mywebapp/web
drwxr-xr-x. 2 tomcat tomcat   54 Jan  7 19:19 errorpage
drwxr-x---. 4 tomcat tomcat   37 Jan  4 16:41 healthcheck
-rwxr-xr-x. 1 tomcat tomcat 3985 Sep 14 15:37 healthcheck.war
drwxr-xr-x. 5 tomcat tomcat   87 Jan  4 16:30 host-manager
drwxr-xr-x. 5 tomcat tomcat  103 Jan  4 16:30 manager

到目前为止,我已经尝试添加到tomcat/conf/web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  version="4.0">

    ...

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

    <error-page>
        <error-code>500</error-code>
        <location>/errorpage/500.html</location>
    </error-page>
    <error-page>
        <error-code>400</error-code>
        <location>/errorpage/400.html</location>
    </error-page>

</web-app>

并在errorpage下部署了tomcat/webapps/errorpage Web应用程序:

# ll webapps/errorpage/
total 12
-rw-r--r--. 1 tomcat tomcat 4 Jan  7 19:19 400.html
-rw-r--r--. 1 tomcat tomcat 4 Jan  7 19:19 404.html
-rw-r--r--. 1 tomcat tomcat 4 Jan  7 19:19 500.html

如果我直接调用错误页面,将为它们提供服务:

# curl localhost:8080/errorpage/404.html
404

但是,当请求一个随机URL时,我仍然得到默认的http 404错误页面。

# curl localhost:8080/ffffff
<!doctype html><html lang="en"><head><title>HTTP Status 404 – Not Found</title>(...)<h3>Apache Tomcat/9.0.10</h3></body></html>

这里缺少什么?

0 个答案:

没有答案