我需要它将多个站点重定向到同一个错误页面

zbdgwd5y  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(237)

我有一个在tomcat上运行的应用程序,运行得很好。当我打电话时http://example.com:18080/app 它很好用。现在,我创建了一个简单的错误页面,以便在出现错误时重定向:

<html>
<head> 
<title>Error Page</title>
</head>
<body> That's an error! </body>
</html>

我把它添加到我的web.xml上

<error-page>
    <error-code>404</error-code>
    <location>/error.jsp</location>
</error-page>

当我打电话时http://example.com:18080/app/blabla 它会转到我的错误页面,但当我调用http://example.com:18080/blabla 或者只是http://example.com:18080 我需要它重定向到同一个错误页面。
有人知道怎么做吗?
谢谢
法比奥

nhhxz33t

nhhxz33t1#

servlet规范要求错误页面位于web应用程序内部(参见错误页面)。因此,您可以:
向所有应用程序添加相同的错误页,
使用特定于容器的机制,而不是错误页面。
在tomcat中 ErrorReportValve (参见文档)负责打印应用程序未自定义的错误消息。如果您的错误消息是一个简单的html(比如“404.html”),您可以将其保存在任意位置(比如 $CATALINA_BASE/errors )并添加一个显式 ErrorReportValveserver.xml :

<Host>
  ...
  <Valve
    className="org.apache.catalina.valves.ErrorReportValve"
    showServerInfo="false"
    errorCode.404="errors/404.html"/>
</Host>

但是,如果要使用jsp或servlet格式化错误页面,则需要:
添加 <error-page> 元素添加到所有应用程序,方法是将以下内容添加到 $CATALINA_BASE/conf/web.xml :

<error-page>
  <error-code>404</error-code>
  <location>/WEB-INF/errors/404.jsp</location>
</error-page>

登上 $CATALINA_BASE/errors 文件夹下 WEB-INF/errors 在所有应用中。这可以通过将以下内容添加到 <Context> 中的元素 $CATALINA_BASE/conf/context.xml :

<Context>
  ...
  <Resources
    className="org.apache.catalina.webresources.StandardRoot">
    <PostResources
      className="org.apache.catalina.webresources.DirResourceSet"
      base="${catalina.base}/errors"
      webAppMount="/WEB-INF/errors"/>
  </Resources>
</Context>

相关问题