目录调整后404主因是路径映射未同步、相对引用失效或欢迎页配置不匹配;需检查文件真实位置、大小写/扩展名一致性、HTML中资源路径是否改为绝对路径,并确认Tomcat/Nginx欢迎页及上下文配置是否更新。

目录调整后出现404,不是HTML写错了,而是服务器找不到新路径下的文件——关键在路径映射是否同步更新、相对引用是否失效、欢迎页配置是否还生效。
检查文件是否真在新路径下且大小写/扩展名一致
Tomcat、Nginx、Apache 在 Linux/macOS 上严格区分大小写和扩展名;Windows 本地测试可能不报错,但一上线就 404。
- 确认
index.html文件确实被移到了目标子目录(如webapps/myapp/pages/),而不是只改了链接却没动文件 - 检查文件扩展名是否是
.html而非隐藏的.html.txt(Windows 需开启“文件扩展名”显示) - 路径中含中文或空格?浏览器会编码为
%E4%BD%A0或%20,但文件系统若存的是未编码名,必然 404;建议全用小写 ASCII 命名
修正 HTML 内所有相对路径引用
目录一动,src="js/app.js"、href="css/main.css"、iframe src="report.html" 这类相对路径会全部失效——浏览器按当前 URL 拼接,不是按文件系统位置。
- 把所有资源路径改成绝对路径:例如
src="/myapp/js/app.js"(开头带/,从根开始) - 避免
../:Jetty、Stapler、部分 CDN 对上级目录支持极差,src="../data/report.html"几乎必错 -
<base href="/myapp/">可统一解决,但必须和实际部署路径完全一致(结尾斜杠不能少,也不能多)
重新配置欢迎页与上下文路径
访问 http://localhost:8080/myapp/ 报 404,但 /myapp/index.html 能打开?说明 Tomcat 没找到默认欢迎页。
生成可在 deepbi 沙箱 iframe 内运行或作为独立文件运行的交互式 HTML 页面,使用 `window.deepbi` JS SDK 实现数据查询、空间管理、文件浏览及用户操作。当用户提出以下需求时启用该能力: - 创建 KPI 仪表盘、数据表格、文件浏览器、成员列表、管理页面; - 明确要求“转成 dhtml”、“转译成 HTML”、“把 XX 页面转成……”、“控制台页面”、“管理后台”、“DeepBI 页面迁移”; - 提及位于 `apps/console/src/featur
立即学习“前端免费学习笔记(深入)”;
- Tomcat 默认只认
index.html、index.htm、index.jsp;如果你改名叫home.html,必须在web.xml里加:<welcome-file-list> <welcome-file>home.html</welcome-file> </welcome-file-list>
- 若想通过根路径
http://localhost:8080/访问新目录,不能靠改配置,得把整个应用重命名为ROOT(即webapps/ROOT/) - 别把 HTML 放到
webapps/static/或webapps/conf/——这些不是 Web 应用上下文,Tomcat 不服务它们
验证服务器是否返回真实 404 状态码
有些环境(如 Live Server 插件、Python http.server)根本不返回 404,而是返回 200 + 错误页内容——这会让 SEO 和调试全失效。
- 用
curl -I http://localhost:8080/nonexistent.html看响应头,确认是HTTP/1.1 404 Not Found,不是200 OK - Nginx 需显式配:
error_page 404 /404.html; location = /404.html { internal; }漏掉internal,外部可直连/404.html,状态码就变 200 - GitHub Pages、Vercel 等平台只认根目录下名为
404.html的文件,且自动返回 404 状态;放错位置或改名(如error404.html)就无效
最容易被忽略的是:路径改了,但前端路由 history 模式没配 fallback,或者后端 API 路由和前端页面路径撞名,导致请求根本没进前端。这类问题不会在本地双击时暴露,只有走 HTTP 请求才触发。


















