我在 Server.xml 的 Host 部分設定了一個 ErrorReportValve:
<Valve className="org.apache.catalina.valves.ErrorReportValve"
errorCode.400="webapps/ROOT/error.html"
showReport="false"
showServerInfo="false" />
errorCode.nnn 狀態的 Tomcat 檔案:
要為 nnn 表示的 HTTP 錯誤代碼回傳的 UTF-8 編碼 HTML 檔案的位置。例如,errorCode.404 指定為 HTTP 404 錯誤回傳的檔案。該位置可以是相對的或絕對的。如果是相對的,它必須相對于 $CATALINA_BASE。如果沒有為狀態代碼定義錯誤頁面,errorCode.0 的特殊值可用于定義要使用的默認錯誤頁面。如果沒有找到匹配的錯誤頁面,將回傳默認的錯誤報告 Valve 回應。
我的 $CATALINA_BASE 指向 /usr/share/tomcat8 并且在 webapps/ROOT/error.html 中找到了與此相關的錯誤頁面:
# ls -lrt /usr/share/tomcat8/webapps/ROOT/error.html
-rw-r--r-- 1 tomcat tomcat 2934 Aug 31 18:24 /usr/share/tomcat8/webapps/ROOT/error.html
我可以通過擺弄 showReport 和 showServerInfo 值看到 ErrorReportValve 生效,但我無法弄清楚如何參考 errorCode.nnn,嘗試了多種靜態和相對路徑的組合。
我可以讓它在運行動態 Web 專案的 Eclipse 中完美運行,但 Eclipse 中的相對路徑是 wtpwebapps/myProject/error.html,這與 Elastic Beanstalk / Amazon Linux 無關。我也可以讓 404 / 500 錯誤正常作業,盡管這些目前在 web.xml 中以較舊的方式定義,因此相對路徑不同。
有沒有人能夠在 Amazon Linux / Tomcat 中獲得 400 錯誤的靜態錯誤頁面?
uj5u.com熱心網友回復:
Tomcat 8.5.75 不支持此功能,請使用 8.5.78 或更高版本。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504797.html