Tomcat 服务器,更改默认 HTTP 404?
Tomcat server, change default HTTP 404?
我正在使用 tomcat 并且我想,每当我转到 servlet 未处理的方向时,做其他事情而不是显示默认错误:
type Status report
message /test
description The requested resource is not available.
我在哪里可以处理这个?
提前致谢
在web.xml中定义一个错误页面:
<error-page>
<error-code>404</error-code>
<location>/path/to/your/page.html</location>
</error-page>
更新
- 否不需要任何规范。可以是任何东西,html、jsp、jsf ...
- 没有
- 可以放在任何地方,通常在底部
- 括号之间
您可以通过它们的 http 状态(404、500,...)或通过定义完全限定的异常名称(java.lang.Exception、java.io.FileNotFoundException ...)来定义错误页面。如果您使用的是 Servlet 3.x,您甚至可以省略 error-code/error-classname 部分来定义默认错误页面。
这是一个最小的 web.xml
,您可以将其放在 webapps 文件夹中(如果您不想全局更改 404 页面)。这将允许您例如将所有请求重定向到新文件夹。
<?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"
metadata-complete="true">
<error-page>
<error-code>404</error-code>
<location>/redirect.jsp</location>
</error-page>
</web-app>
注意web.xml
必须放在.../webapps/YourFolder/WEB-INF/web.xml
中。
在redirect.jsp
。你会放这样的东西:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<title>Moved</title>
</head>
<%
// get the requested URI
String requestedLocation = request.getRequestURI();
// rewrite to new location
String newLocation = requestedLocation.replaceAll("^/Old", "/New");
// 301 - permanent redirect
response.setStatus(response.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newLocation);
%>
<body>
→ <a href="<%=newLocation%>"><%=newLocation%></a>
</body>
</html>
从 Tomcat 9 开始有不同的错误处理配置。
你必须:
- 创建简单的 html 错误页面
- 将其保存在某个目录中(例如webapps/ROOT/error_page.html)
- 将阀门配置添加到主机部分的 server.xml。
<Valve className="org.apache.catalina.valves.ErrorReportValve" errorCode.404="webapps/ROOT/error_page.html" errorCode.0="webapps/ROOT/error_page.html" showReport="false" showServerInfo="false" />
请参考:
或 Tomcat 文档:https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Error_Report_Valve
我正在使用 tomcat 并且我想,每当我转到 servlet 未处理的方向时,做其他事情而不是显示默认错误:
type Status report
message /test
description The requested resource is not available.
我在哪里可以处理这个?
提前致谢
在web.xml中定义一个错误页面:
<error-page>
<error-code>404</error-code>
<location>/path/to/your/page.html</location>
</error-page>
更新
- 否不需要任何规范。可以是任何东西,html、jsp、jsf ...
- 没有
- 可以放在任何地方,通常在底部
- 括号之间
您可以通过它们的 http 状态(404、500,...)或通过定义完全限定的异常名称(java.lang.Exception、java.io.FileNotFoundException ...)来定义错误页面。如果您使用的是 Servlet 3.x,您甚至可以省略 error-code/error-classname 部分来定义默认错误页面。
这是一个最小的 web.xml
,您可以将其放在 webapps 文件夹中(如果您不想全局更改 404 页面)。这将允许您例如将所有请求重定向到新文件夹。
<?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"
metadata-complete="true">
<error-page>
<error-code>404</error-code>
<location>/redirect.jsp</location>
</error-page>
</web-app>
注意web.xml
必须放在.../webapps/YourFolder/WEB-INF/web.xml
中。
在redirect.jsp
。你会放这样的东西:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head>
<title>Moved</title>
</head>
<%
// get the requested URI
String requestedLocation = request.getRequestURI();
// rewrite to new location
String newLocation = requestedLocation.replaceAll("^/Old", "/New");
// 301 - permanent redirect
response.setStatus(response.SC_MOVED_PERMANENTLY);
response.setHeader("Location", newLocation);
%>
<body>
→ <a href="<%=newLocation%>"><%=newLocation%></a>
</body>
</html>
从 Tomcat 9 开始有不同的错误处理配置。
你必须:
- 创建简单的 html 错误页面
- 将其保存在某个目录中(例如webapps/ROOT/error_page.html)
- 将阀门配置添加到主机部分的 server.xml。
<Valve className="org.apache.catalina.valves.ErrorReportValve" errorCode.404="webapps/ROOT/error_page.html" errorCode.0="webapps/ROOT/error_page.html" showReport="false" showServerInfo="false" />
请参考: 或 Tomcat 文档:https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html#Error_Report_Valve