← 返回文章列表
实战方法论 2026-05-08

踩坑:Hugo frontmatter不规范文章不显示

Hugo 踩坑 技术

Hugo有个特别坑的地方。

你写了一篇文章,push上去了,但网站上看不到。

没有报错,没有提示,就是看不到。

可能的原因,我踩过不止一次。

原因一:draft:true

这个最常见。

Hugo新建的文章,默认draft是true。

---
title: "我的文章"
date: 2026-05-08
draft: true  # 草稿,不发布
---

发布前要改成false。

draft: false

或者在frontmatter里直接不写这一行,默认就是false。

原因二:frontmatter格式错误

Hugo支持三种frontmatter格式:YAML、TOML、JSON。

我用的是YAML,最容易出错。

YAML对缩进敏感:

# 正确
title: "标题"
tags: [tag1, tag2]

# 错误:缩进不对
title: "标题"
  tags: [tag1, tag2]

YAML对引号敏感:

# 单引号、双引号都可以
title: "标题"
title: '标题'

# 但引号不匹配会出错
title: "标题'  # 错误

原因三:文件名含特殊字符

Hugo文件名支持英文、数字、中文、中划线、下划线。

不支持的字符,比如:?#,会导致解析问题。

建议文件名只用:

  • 英文小写
  • 数字
  • 中划线 -
  • 下划线 _

比如:my-first-post.md我的文章.mdMy First Post.md ✗ (有空格)

原因四:categories/tags格式不对

如果用了categories或tags,要确保格式正确。

# 正确:数组格式
tags: [tag1, tag2]
categories: [实战方法论]

# 错误:字符串格式(虽然有些主题支持)
tags: "tag1"

数组格式是标准写法。

原因五:日期格式不对

日期格式要标准:

# 标准ISO格式
date: 2026-05-08

# 带时间
date: 2026-05-08T10:30:00+08:00

如果日期写成了2026/05/08或者2026.05.08,可能会出问题。

原因六:路径问题

Hugo文章放在content/posts/目录下。

如果目录名不对,或者文章放错了位置,就不会显示。

比如:

  • content/post/(少了个s)→ 不行
  • content/posts/my-article/(放进了子目录)→ 主题可能不支持

确保文章直接在content/posts/下。

排查方法

如果文章不显示,怎么排查?

方法一:本地预览

hugo server --buildDrafts

--buildDrafts可以看到草稿。

本地能看到的,服务器上一般也能看到。

如果本地看不到,就是文件本身有问题。

方法二:检查hugo stats

hugo

看看有没有报错信息。

方法三:检查config

确认[taxonomies]里定义了tag和category:

[taxonomies]
  tag = "tags"
  category = "categories"

如果不定义,tags和categories不起作用。

我的教训

有一次我写了好几篇文章,push上去发现只有两篇显示。

查了半天,发现那三篇的frontmatter里draft:写的是true

改完push,才显示出来。

还有一个教训:

创建完源文件后,必须确认content/posts/目录里有对应文件。

有时候文件名打错了,或者放错位置了,不容易发现。

养成习惯:创建完就ls看一眼。

总结

Hugo文章不显示的六个原因:

  1. draft:true → 改成false
  2. frontmatter格式错误 → 检查缩进和引号
  3. 文件名含特殊字符 → 改成纯英文或中文
  4. categories/tags格式不对 → 用数组格式
  5. 日期格式不对 → 用ISO格式
  6. 路径问题 → 确认在content/posts/下

排查用hugo server --buildDrafts本地预览。

习惯:创建完文件就确认一下目录。