我想使用自定义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>
这里缺少什么?