404多数因未用Web服务器预览:双击HTML走file://协议,不支持相对路径资源和前端路由,须用npx serve -s _site等启动HTTP服务访问localhost。

静态生成器本地预览时 doc.html 或 index.html 404
多数情况不是文件没生成,而是你没用 Web 服务器打开——双击 HTML 文件走的是 file:// 协议,不触发路由、无法加载相对路径的 JS/CSS,连 fetch('./data.json') 都会直接 404。必须启动一个最小 HTTP 服务。
实操建议:
- 用
npx serve -s _site(Eleventy 默认输出目录)、hugo server或bundle exec jekyll serve启动内置服务,访问http://localhost:1313等地址 - 别依赖 PyCharm / VS Code 插件的“Open in Browser”,它们常静默走
file://;右键菜单里找“Copy Relative Path”再粘到终端启动服务更可靠 - 确认生成目录名是否被改过:Hugo 默认是
public/,Jekyll 是_site/,Eleventy 是_site/,但你若在eleventy.js里设了dir.output: 'dist',就得去dist/下启动服务
部署后线上页面 404,但本地预览正常
根源几乎都在路径映射错位:生成器输出的 HTML 文件路径,和你在 URL 里写的路径对不上。比如 Hugo 把 content/blog/hello.md 默认渲染成 public/blog/hello/index.html,但你链接写的是 /blog/hello.html,就必然 404。
实操建议:
- 检查生成后的文件结构:进
public/或_site/目录,看目标页面是不是以index.html形式落在子目录下(即“目录式”),还是平铺为hello.html(即“文件式”) - 统一用根相对路径引用资源:
/css/main.css而非../css/main.css,避免因页面嵌套层级不同导致 CSS 404 连带引发整页渲染失败 - GitHub Pages 用户特别注意:若仓库名是
my-blog,站点实际访问地址是https://username.github.io/my-blog/,所有内部链接和资源路径必须加前缀/my-blog/,或配置baseURL: "https://username.github.io/my-blog/"(Hugo)或url: "https://username.github.io"+baseurl: "/my-blog"(Jekyll)
使用自定义 permalink 或 slug 后页面 404
Front Matter 里写的 permalink: /posts/:year/:month/:day/:slug/ 或 slug: hello-world 如果和实际文件路径、模板中 href 的拼接逻辑不一致,就会生成错路径,而构建过程不会报错。
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
实操建议:
- 打开生成后的 HTML 源码,搜索
,看链接值是否和磁盘上真实文件路径能对应上;例如生成了public/posts/2024/01/01/hello-world/index.html,那链接必须是/posts/2024/01/01/hello-world/,末尾斜杠不能少 - Hugo 用户注意:
uglyurls: true可强制输出hello-world.html而非目录结构,适合调试阶段快速验证路径逻辑 - Jekyll 中
permalink值若含非法字符(如空格、中文、#),会被静默转义或截断,最终生成的文件名与预期不符,建议只用 ASCII 字母、数字、短横线
静态资源(CSS/JS/图片)单独 404
这类 404 不影响 HTML 加载,但会让页面白屏或样式错乱,容易误判为主页面问题。浏览器 Network 面板里状态码为 404 的请求,点开看 Initiator 列就能定位是哪个 HTML 或 JS 文件发起了错误请求。
实操建议:
- 检查资源是否真被生成:比如
css/main.css是由 Sass 编译而来,但编译脚本失败或未运行,_site/css/下压根没有这个文件 - 确认路径大小写:macOS 和 Windows 对文件名不敏感,Linux 服务器敏感;
Image.jpg和image.jpg在本地能开,上线就 404 - Eleventy 用户注意:
eleventyConfig.addPassthroughCopy('images')必须显式声明要拷贝的静态目录,否则images/logo.png不会出现在_site/下
真正卡住人的,往往不是“找不到文件”,而是“以为找到了,其实路径语义已经变了”——比如 /about/ 表示一个目录,/about.html 表示一个文件,两者在服务器上是完全不同的资源定位方式,而生成器默认选哪一种,取决于你没注意到的一行配置。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










