首先确认访问的URL是否准确,包括上下文路径(如/myapp)和资源路径(如/login.jsp)。需注意:
Login.jsp与login.jsp视为不同文件);/myapp//login.jsp可能导致解析失败);ROOT应用(即http://localhost:8080/对应webapps/ROOT目录)。Tomcat部署WAR文件或Web应用时,需检查:
$CATALINA_HOME/webapps/目录($CATALINA_HOME通常为/usr/share/tomcat或/opt/tomcat);myapp.war会解压为webapps/myapp),若未解压,可尝试重启Tomcat(sudo systemctl restart tomcat)或手动解压;index.html、login.jsp)是否位于Web应用的根目录或对应子目录下。$CATALINA_HOME/conf/server.xml,检查<Host>标签下的appBase(默认webapps)和autoDeploy(建议开启true)配置是否正确;若有<Context>标签,需确保path(上下文路径)与访问路径一致,docBase(应用目录)指向正确(如<Context path="/myapp" docBase="myapp" />)。WEB-INF/web.xml文件,确认Servlet或资源的url-pattern配置与请求URL匹配(如<url-pattern>/login</url-pattern>对应http://localhost:8080/myapp/login)。Tomcat用户(通常为tomcat或www-data)需对Web应用的文件和目录有读取权限。可通过以下命令调整权限:
sudo chown -R tomcat:tomcat /usr/share/tomcat/webapps/yourApp # 将应用目录所有者改为tomcat
sudo chmod -R 755 /usr/share/tomcat/webapps/yourApp # 赋予读、执行权限
若权限不足,Tomcat无法访问资源,会返回404错误。
Tomcat默认使用8080端口,若该端口被其他程序占用,会导致请求无法到达。可通过以下命令检查端口占用情况:
sudo netstat -tulnp | grep 8080 # 查看8080端口的进程
若端口被占用,可修改server.xml中的<Connector port="8080">为其他端口(如8081),或终止占用进程(sudo kill -9 <进程ID>)。
Tomcat的日志文件(位于$CATALINA_HOME/logs/目录)包含详细的错误信息,是排查404问题的关键:
GET /myapp/login HTTP/1.1记录);若需提升用户体验,可自定义404页面:
WEB-INF/目录下创建error/文件夹(如webapps/myapp/WEB-INF/error/);404.html),内容包含友好提示(如“页面未找到,请检查URL拼写”);web.xml文件,添加以下配置:<error-page>
<error-code>404</error-code>
<location>/WEB-INF/error/404.html</location>
</error-page>
sudo systemctl restart tomcat)。通过以上步骤逐一排查,可快速定位并解决Debian系统中Tomcat的404错误。若问题仍未解决,建议结合日志中的具体错误信息进一步分析。