我正在尝试自定义tomcat7错误页。我需要对所有上下文路径进行全局设置,因此我最终在global/etc/tomcat/web.xml文件中进行了配置:
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<error-page>
<error-code>404</error-code>
<location>/custom-pages/error.jsp</location>
</error-page>
当我问Tomcat时,它成功地返回了页面:
curl -s 127.0.0.1:8080/custom-pages/error.jsp
<html><body>Sorry, the page you requested were not found.</html></body>
但是,当我请求一些不存在的页面时,我得到了一个默认的错误页面,带有Tomcat,但不是我的一个:
curl 127.0.0.1:8080/not-exist
<html><head><title>Error report</title></head>
<body><h1>HTTP Status 404 - /not-exist</h1></body>
</html>
以下是tomcat web目录的布局:
tree /usr/share/tomcat7/webapps/
/usr/share/tomcat7/webapps/
└── ROOT
└── custom-pages
└── error.jsp
以及自定义错误页的内容:
cat /usr/share/tomcat7/webapps/ROOT/custom-pages/error.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<html><body>Sorry, the page you requested were not found.</body></html>
有什么想法吗?提前谢谢。
最佳答案
好吧,同时我找到了答案。我不得不在/etc/tomcat7/context.xml中注释org.apache.catalina.valves.ErrorReportValve指令,它做到了。看起来这个指令“覆盖”了任何自定义错误页!希望对其他人有用。。。:
<!--
<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false" showServerInfo="false" />
-->
关于linux - 无法自定义tomcat7 404错误页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44052425/