index.md 与 _index.md 文件
在 Hugo 中,index.md
和 _index.md
的作用与内容组织结构密切相关,两者分别承担不同的角色:
1. index.md
:作为内容页面的核心文件
- 作用:
index.md
是 单个内容页面的主文件,通常用于生成一个独立页面的 HTML(例如文章或独立页面)。当 Hugo 处理包含index.md
的文件夹时,会将其渲染为index.html
,并通过 Web 服务器(如 Nginx)直接访问该文件。 - 典型场景:
- 在文章文件夹中放置
index.md
,并配合图片、资源文件等,形成完整的页面内容。例如:1content/post/2024-03-17-示例文章/ 2 ├── index.md 3 └── image.jpg
- 本地编辑时,Markdown 文件(如
index.md
)可直接引用同级图片(如image.jpg
),确保预览和最终生成路径一致。
- 在文章文件夹中放置
2. _index.md
:定义分支页面的元数据和模板
- 作用:
_index.md
是 分支页面(Section)的入口文件,用于定义该层级的元数据(如标题、排序规则)和模板逻辑。它不直接生成独立页面,而是控制其子内容的组织和展示方式。 - 典型场景:
- 在
content/posts/
目录下创建_index.md
,可配置该分类的全局属性(如weight: 1
定义排序权重)或自定义列表模板。 - 控制子页面列表的渲染方式。例如,通过
_index.md
指定type: "posts"
,Hugo 会调用对应的layouts/posts/list.html
模板生成分类列表页。
- 在
对比总结
文件 | 适用场景 | 生成结果 | 资源管理 |
---|---|---|---|
index.md |
独立页面(如文章、关于页) | example.com/post/my-article/ |
与图片等资源同级存放 |
_index.md |
分类/分支页面(如博客列表) | example.com/posts/ |
控制子内容结构和元数据 |
补充说明
- 资源路径管理:
使用index.md
时,Hugo 会将其所在文件夹视为页面的根路径,因此图片等资源可直接通过相对路径引用(如
),无需担心本地预览与生成后的路径差异。 - 模板优先级:
若同时存在index.md
和_index.md
,Hugo 会优先渲染index.md
作为独立页面,而_index.md
仅影响分支层级的元数据。例如,content/posts/_index.md
定义分类属性,而content/posts/hello-world/index.md
生成具体文章页。
通过合理使用这两种文件,可以高效管理 Hugo 的内容层级和渲染逻辑。