Hugo 博客添加搜索功能踩坑记
439 字
2 分钟
Hugo 博客添加搜索功能踩坑记
背景
博客搭好之后,发现导航栏里的 Search 链接点进去是 404。分类页面(Categories)偶尔也打不开。排查了一下,记录一下解决过程。
问题一:搜索页面 404
PaperMod 主题虽然有搜索功能,但 Hugo 不会自动生成 /search/ 页面。搜索框的 HTML 模板在主题里有(layouts/_default/search.html),但缺少对应的 content 文件,Hugo 不知道要渲染这个页面。
解决方法: 创建 content/search/_index.md:
---title: "Search"layout: "search"---Hugo 会根据这个文件找到 search.html 模板,生成 /search/index.html。
问题二:分类页面 404
分类页面本地构建正常,但 GitHub Pages 上线后 404。
原因:GitHub Pages 的 CDN 缓存还没刷新。文件其实已经部署上去了,只是边缘节点还在用旧缓存。
解决方法: 等几分钟缓存过期就好。如果长期不刷新,可以在仓库 Settings → Pages 里点一次 “Re-run deployment”。
问题三:搜索功能不生效
搜索页面有了,但输入关键词没反应。
检查发现搜索功能依赖 Fuse.js(前端模糊搜索库),通过 CDN 加载。如果 CDN 被墙或者加载失败,搜索就挂了。
备选方案: 把 Fuse.js 下载到本地 static/js/ 目录,修改模板引用本地文件:
<script src="{{ "js/fuse.min.js" | relURL }}"></script>Hugo 页面生成规则总结
| 页面类型 | 需要做什么 |
|---|---|
| 文章列表 | 自动生成,不需要额外配置 |
| 文章详情 | content/posts/xxx.md 自动生成 |
| 分类页面 | content/categories/xxx/_index.md + frontmatter 里声明 categories |
| 标签页面 | frontmatter 里声明 tags,自动生成 |
| 自定义页面(如搜索) | content/xxx/_index.md + layouts/_default/xxx.html |
经验
Hugo 的页面生成是内容驱动的——有 content 文件才有页面,有模板才能渲染。模板和内容缺一不可。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
Hugo 博客添加搜索功能踩坑记
https://blog-astro-ddd.vercel.app/posts/hugo-search-fix/相关文章智能推荐
1
从 Hugo 和 Next.js 回到 Astro 7:一次博客重构复盘
技术笔记记录博客从 Hugo、Next.js 回到 Astro 7 的重构过程,包括框架升级、移动端性能、图片优化、Swup 状态问题和 Vercel 部署。
2
博客系统从 React+Vite 迁移到 Next.js 16 踩坑记录
技术笔记2026-05-03,把个人博客前端从 React+Vite 迁移到 Next.js 16,过程中踩了不少坑,记录一下。
3
从零搭建 Hugo 博客并部署到 GitHub Pages
技术笔记记录从零开始用 Hugo 搭建博客、迁移旧文章、配置 GitHub Actions 自动部署的完整过程。
4
博客文章写作规范与模板
技术笔记统一博客文章的写作格式,避免每次写文章都从头想 frontmatter 怎么写。
5
太平山顶:从缆车到维港夜景的完整游览思路
生活太平山顶的交通、观景位置、步行路线和夜景时间安排,适合第一次去香港的游客参考。
随机文章随机推荐


