当前位置: 首页 > 知识库问答 >
问题:

Tomcat服务器,更改默认HTTP 404?

翁俊良
2023-03-14

我使用的是tomcat,每当我转到一个servlet无法处理的方向时,我都想做其他事情,比如显示默认错误:

type Status report

message /test

description The requested resource is not available.

我在哪里可以处理这个问题¿?

先谢谢你了

共有3个答案

颜楚青
2023-03-14

从Tomcat 9开始,有了不同的错误处理配置。

您必须:

  • 创建简单的html错误页
  • 将其保存在某个目录中(例如webapps/ROOT/error_page.html)
  • 将阀配置添加到服务器。主机部分中的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" />

请参考:https://stackoverflow.com/a/55702749/2532710或Tomcat文档:https://Tomcat . Apache . org/Tomcat-9.0-doc/config/Valve . html # Error _ Report _ Valve

柴耀
2023-03-14

下面是一个最小的< code>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>

请注意<code>web。xml必须放在…/webapps/YourFolder/WEB-INF/WEB.xml中。

在< code>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>
&rarr; <a href="<%=newLocation%>"><%=newLocation%></a>
</body>
</html>
暴辰龙
2023-03-14

在 Web 中定义错误页面.xml

<error-page>
 <error-code>404</error-code>
 <location>/path/to/your/page.html</location>
</error-page>

更新

  1. No不需要任何规范。可以是任何东西,html、jsp、jsf…
  2. 可以放在任何地方,经常是底部
  3. 括号之间

您可以根据错误页面的http状态(404,500,...)或通过定义完全限定的异常名(java.lang.Exception,java.io.FileNotFoundException...).如果您使用Servlet 3.x,您甚至可以省略错误代码/错误类名部分来定义默认错误页面。

 类似资料:
  • 问题内容: 我想在侦听器中指定可侦听的默认端口。是否有比在内部解析并插入配置的端口更容易的修复方法? 目标是运行时不必每次都指定地址和端口,而要从中获取参数。 问题答案: 使用以下命令创建一个bash脚本: 将其保存为runserver并与manage.py放在同一目录中 并运行为

  • 我正在使用Spring Boot 2.4.4,我会将默认Web服务器Tomcat更改为undertow或JHetty,但我发现同时使用Gradle或Maven非常困难。 一份旧的文档介绍了如何做到这一点,但我确信一切都改变了,因为现在tomcat、undertow和jetty配置嵌入到核心库中: https://docs.spring.io/spring-boot/docs/2.1.9.RELEA

  • 如何更改@kafkastreamssstatestore的默认serdes?我知道,在Kafka流云的新版本3.0.1中,方法如下所述:https://cloud.spring.io/spring-cloud-static/spring-cloud-stream-binder-kafka/3.0.1.RELEASE/reference/html/spring-cloud-stream-binder

  • 默认情况下,Tomcat配置的默认端口是8080。这就是为什么所有已部署的Web应用程序都可以通过URL访问的原因:http://localhost:8080/yourapp。如果希望应该在80端口上运行,则需要将默认端口8080更改为80,这是HTTP连接器的默认端口。 要更改此端口,请打开并找到以下内容: 更改为以下内容: 修改后,您可以使用"http://localhost/"来访问您的应用

  • 当启动一个流浪者盒子时,“默认”这个名字来自哪里? 有没有办法设定这个?

  • 可以参考apache-tomcat\bin\Windows service HOW-TO.txt 一、Windows 64 位系统(推荐) 1. 把平台自带的jdk目录用64位jdk替换(..\..\jdk目录) 2. 当前目录下tomcat6.exe改名为tomcat6-x86.exe,tomcat6-x64.exe改名为tomcat6.exe 3. 双击执行installService.bat