创建Tomcat自定义错误页面,但不在ROOT中

问题描述 投票:0回答:1

我可以将通用错误文件夹不放在 /ROOT 文件夹中,而是放在其他地方吗?

我正在运行带有多个应用程序的本地 Tomcat 服务器(9.0.37),类似于下面的文件夹结构

tomcat/
      conf/
         web.xml
         server.xml
      webapps/
         ROOT/
           WEB-INF/
         app1/
           META-INF/
           WEB-INF/
              web.xml
         app2/
           META-INF/
           WEB-INF/
              web.xml

我正在尝试创建一些自定义错误页面来取代默认的 Tomcat 错误页面;可以被所有应用程序共享的通用的。

我已经咨询过 a few other examples 并创建了一个

/errors
文件夹,其中包含我的错误页面的 HTML,以及修改
tomcat/conf/web.xml

<error-page>
   <error-code>404</error-code> <!-- Not Found -->
    <location>/errors/error_404.html</location>
</error-page>

tomcat/conf/server.xml

<Valve className="org.apache.catalina.valves.ErrorReportValve"
       error.400="errors/error_400.html"
       error.404="errors/error_404.html" showReport="false"
       showServerInfo="false" />

这里的问题是,在部署并模拟 404 错误之后,我只得到了“Page Not Found”行。

我的

/errors
文件夹最初停放在
tomcat/
下(基本上与
conf/
处于同一水平),但我将其移动以尝试找出此问题的原因。

在我的文件夹路径中移动后,发现两个 XML 文件中的设置(或者至少基于我所看到的

conf/web.xml
)似乎指向
conf/webapps/ROOT/errors

换句话说,如果我将我的

/errors
文件夹添加到
conf/webapps/ROOT/
,它就可以工作。这与我上面找到的答案一致。

这不是我想要的。我不希望我的错误文件夹位于 ROOT 文件夹中,而是位于另一个更通用的路径中,如上面

/tomcat

下所述

我什至尝试过类似完整路径本身的东西

<error-page>
    <error-code>404</error-code> <!-- Not Found -->
    <location>/apache-tomcat-9.0.37/webapps/errors/error_404.html</location>
</error-page>

我仍然收到“找不到页面”错误。

我也尝试过,根据上面链接的答案之一,以

./

开始路径
<error-page>
     <error-code>404</error-code> <!-- Not Found -->
     <location>./errors/error_404.html</location>
</error-page>

我得到的只是服务器抱怨 URL 必须以正斜杠('/')开头。

尝试

/../errors/error_404.html
也没有真正帮助。

我哪里出错了?

java tomcat custom-error-pages
1个回答
0
投票

好吧......我发现我错在哪里了。

conf/server.xml

<Valve className="org.apache.catalina.valves.ErrorReportValve"
       error.400="errors/error_400.html"
       error.404="errors/error_404.html" showReport="false"
       showServerInfo="false" />

错误.404 -> 错误代码.404

错误.400 -> 错误代码.400

不确定我是否读错了文档,或者我阅读文档的网站语法错误,但是一旦我更改了它,我的问题或多或少就得到了解决。这不仅根据我的需要引用了基本

/tomcat
目录中的错误页面,而且还允许引用其他文件夹,例如
/tomcat/webapps

© www.soinside.com 2019 - 2024. All rights reserved.