我正在使用Apache Tomcat v7.0.63,它托管了4个不同的应用程序。其中一个应用程序具有错误页面列表。
现在我们想让它通用,以便其他应用程序也可以使用相同的错误页面。这样,我们就不需要在所有Web应用程序中保留重复文件。我们希望将所有错误页面保存在tomcat / errorPages目录或tomcat / conf / errorPages目录下。
我尝试修改/tomcat/webapps/MyApplication/WEB-INF/web.xml文件,如下所示,它无法正常工作。有人可以帮忙吗?
</error-page>
<error-page>
<error-code>404</error-code>
<location>/../../errorPages/errorPage404.html</location>
</error-page>
并且errorPage404.html位于/ tomcat / errorPages目录中。
答案 0 :(得分:0)
如果您希望它具有通用性,我建议您在try{
$status = ([wmiclass]"\\.\root\ccm\clientsdk:CCM_ClientUtilities").DetermineIfRebootPending()
if($true -in (Test-Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending", "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\RebootRequired")
-or Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\Session Manager" -Name PendingFileRenameOperations -EA Ignore
-or (($status -ne $null) -and $status.RebootPending)) {
# do stuff
}
} catch{}
中定义错误。它将覆盖TOMCAT_HOME/conf/web.xml
附带的默认错误页面。
Tomcat
确保将错误页面移至位置<error-page>
<error-code>500</error-code>
<location>/server_error.html</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/file_not_found.html</location>
</error-page>
答案 1 :(得分:0)
自Apache Tomcat 9.0版开始,您可以在主机定义下的server.xml上使用ErrorCode.nnn(其中nnn是HTTP错误代码)定义指向UTF-8编码的HTML页面的ErrorValve,如{ {3}}。
因此,您的server.xml应该包含在您的主要主机上:
<Host appBase="webapps" autoDeploy="false" name="localhost">
<!-- ... your other configs ... -->
<Valve className="org.apache.catalina.valves.ErrorReportValve" errorCode.404="<path to your html, may be relative to $CATALINA_HOME or absolute>"/>
</Host>
这避免了需要在每个项目中定义不同的错误页面,也不必像先前的回答中所述,在全局web.xml上包含具有全局错误页面的全局ROOT.war。