Debian系統下Tomcat自定義錯誤頁面的完整步驟
sudo apt update && sudo apt install tomcat9安裝最新版Tomcat 9)。myapp應用對應路徑為/var/lib/tomcat9/webapps/myapp/)。error-pages):sudo mkdir -p /var/lib/tomcat9/webapps/myapp/error-pages
sudo nano /var/lib/tomcat9/webapps/myapp/error-pages/404.html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>404 - 頁面未找到</title>
</head>
<body>
<h1>404 - 頁面不存在</h1>
<p>抱歉,您訪問的頁面不存在或已被移除。</p>
<a href="/">返回首頁</a>
</body>
</html>
按相同方式創建其他錯誤頁面(如500.html用于服務器內部錯誤)。/var/lib/tomcat9/webapps/ROOT/)。error-pages)并添加頁面文件(步驟同上)。
注:全局配置的錯誤頁面會被所有未單獨配置的應用繼承,但會被應用的
web.xml覆蓋。
web.xml配置(精準控制)WEB-INF目錄(若不存在則創建):sudo mkdir -p /var/lib/tomcat9/webapps/myapp/WEB-INF
web.xml文件(若不存在則新建):sudo nano /var/lib/tomcat9/webapps/myapp/WEB-INF/web.xml
<web-app>標簽內添加<error-page>元素(以404、500錯誤為例):<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="3.1">
<!-- 其他配置 -->
<error-page>
<error-code>404</error-code>
<location>/error-pages/404.html</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error-pages/500.html</location>
</error-page>
<!-- 可添加更多錯誤代碼(如403、503) -->
</web-app>
注:
<location>路徑需相對于Web應用的根目錄(如/error-pages/404.html對應error-pages/404.html)。
server.xml配置(可選補充)sudo nano /etc/tomcat9/conf/server.xml
<Host>元素內添加<ErrorPage>配置(以404為例):<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
<!-- 其他配置 -->
<Valve className="org.apache.catalina.valves.ErrorReportValve"
showReport="false"
showServerInfo="false"/>
<ErrorPage errorCode="404" location="/errorpages/404.html"/>
<ErrorPage errorCode="500" location="/errorpages/500.html"/>
</Host>
注:此方式需配合全局錯誤頁面目錄(如
/var/lib/tomcat9/errorpages/)使用,且優先級低于web.xml配置。
確保Tomcat用戶(通常為tomcat)能讀取錯誤頁面文件:
sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/myapp/error-pages/
sudo chmod -R 755 /var/lib/tomcat9/webapps/myapp/error-pages/
執行以下命令重啟Tomcat服務,使配置生效:
sudo systemctl restart tomcat9
通過瀏覽器訪問不存在的頁面(如http://服務器IP/myapp/nonexistent),應顯示自定義的404錯誤頁面;觸發服務器錯誤(如訪問不存在的Servlet),應顯示500錯誤頁面。
注意事項:
web.xml配置會覆蓋全局設置。server.xml中的showServerInfo="false"設置。