核心问题是旧链接未重定向、新域名未正确解析到托管目录或搜索引擎仍索引旧路径;需检查DNS解析、托管平台配置、301重定向设置及静态资源路径一致性。

换域名后静态HTML博客大面积404,核心问题不是页面没传上去,而是旧链接未重定向、新域名未正确解析到托管目录,或搜索引擎仍索引着老路径。
检查DNS与托管平台是否真正生效
域名更换后,浏览器访问新域名返回404,第一反应不该是改HTML,而是确认请求是否真抵达了你的托管服务。
- 用
dig或nslookup查新域名A记录是否指向正确的IP(如 GitHub Pages 的185.199.108.153等) - GitHub Pages 要求新仓库名匹配新域名(
username.github.io或custom-domain.com),且仓库 Settings → Pages → Custom domain 填对并勾选 Enforce HTTPS - Netlify 用户需在 Domain settings 中添加新域名,并验证 DNS TXT 记录是否已传播(常卡在 1–24 小时)
- 若用自建Nginx/Apache,确认
server_name或ServerName已更新为新域名,且root指向的是当前博客构建后的输出目录(如/var/www/blog/dist)
旧URL必须301重定向,不能只靠改HTML
静态博客没有后端,但托管平台支持规则级重定向——这是避免SEO损失和用户跳失的唯一可行方式。
- GitHub Pages 不支持原生重定向,必须借助
404.html里的 JavaScript 跳转(不推荐)或迁移到支持重定向的平台(如 Netlify) - Netlify:在项目根目录加
_redirects文件,写入:https://old-domain.com/* https://new-domain.com/:splat 301
(注意空格分隔,末尾无斜杠) - Vercel:在
vercel.json中配置rewrites,但注意它默认不继承状态码,需显式加"status": 301 - 禁止用 HTML 的
:它返回 200 状态码,搜索引擎当正常页抓取,死链越积越多
本地构建路径与部署路径不一致导致资源404
很多静态博客生成器(如 Hugo、Jekyll)默认假设站点根路径是 /,换域名后若用了子路径(如 https://new-domain.com/blog/),所有 CSS、JS、图片链接会集体失效,触发二级404。
实现 Markdown↔ HTML 互转,支持导出 PDF,用于用户请求的文档格式转换。
- Hugo 用户检查
config.toml中baseURL = "https://new-domain.com/"是否带结尾斜杠,且与实际部署路径完全一致 - Jekyll 用户确认
_config.yml的url和baseurl:前者是域名,后者是子路径(如/blog),生成时会自动拼接 - 手动写的 HTML 必须把所有
href="/css/style.css"改成相对路径href="css/style.css",或用统一基准(但注意影响所有相对链接) - 检查浏览器 Network 面板:404 请求的 URL 是
https://new-domain.com/css/style.css还是https://new-domain.com/blog/css/style.css?前者说明路径配置错,后者说明baseurl没生效
搜索引擎缓存与用户书签还在用旧域名
即使你已全量切换,Google 仍可能在几周内继续用旧域名抓取,用户也可能直接输错旧域名——这时候 404 页面本身必须“能自己活下来”。
- 确保新域名下的
/404.html存在,且服务器返回真实404 Not Found状态码(用curl -I https://new-domain.com/xxx验证) - 该页面所有样式必须内联(
),字体用系统栈,禁用外部 CSS/JS 请求——因为 /404.html 出现时,/css/ 可能也 404 - 页面里可放一个显眼的跳转按钮:
@#@#@#@#@#@#@#@#@#@0,别依赖 JS - 在 Google Search Console 提交新域名,同时用 “Change of address” 工具通知迁移(仅限主域名变更,子目录不支持)
最易被忽略的一点:换域名后,旧域名的 SSL 证书如果没续订,部分浏览器会先报安全警告再跳 404,看起来像纯 404,实则是 TLS 层失败。务必确认两个域名的证书都有效且由托管平台自动管理。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










