站点地图
使用内建模板生成 sitemap.xml,并按页面或全站调整配置。
概览
Hugo 内建的站点地图模板符合 sitemap 协议 v0.9 版。
单语言项目中,Hugo 使用内建的 sitemap 模板,在 publishDir 根目录生成一个 sitemap.xml。
多语言项目则会生成两份内容:
- 在每种语言(每个站点)的根目录下,使用内建的 sitemap 模板生成各自语言的
sitemap.xml; - 在
publishDir根目录下,使用内建的 sitemapindex 模板生成一个索引文件sitemapindex.xml,把各语言的地图汇总起来。
配置
站点地图的默认行为可在项目配置的 [sitemap] 小节中调整,可用的键包括:
changeFreq:页面默认的更新频率,取值形如daily、weekly、monthly;priority:页面默认的优先级,取值在0.0到1.0之间;filename:生成的文件名,默认是sitemap.xml。
这些值作为全站默认值生效,单页可以在前置元数据中覆盖。修改 filename 时请注意,输出文件名会随之改变。
覆盖默认值
在某个页面的前置元数据中,可以覆盖该页在站点地图里的默认值:
title = '新闻'
[sitemap]
changefreq = 'weekly'
disable = true
priority = 0.8其中 changefreq 与 priority 覆盖全站默认值;disable = true 表示不把这一页写进站点地图,适合内容较薄或不希望被收录的页面。
覆盖内建模板
要覆盖内建的 sitemap.xml 模板,创建 layouts/sitemap.xml 文件即可。遍历页面集合时,分别用 .Sitemap.ChangeFreq 和 .Sitemap.Priority 读取更新频率与优先级——这两个值已经按「前置元数据优先、否则用全站默认」的规则解析完毕,模板里直接输出即可。
要覆盖内建的 sitemapindex.xml 模板,则创建 layouts/sitemapindex.xml 文件。多语言项目通常需要定制的是这个索引文件,例如只把部分语言列入索引。
关闭站点地图生成
如果站点不需要站点地图,可以在项目配置中关闭对应的输出类型:
disableKinds = ['sitemap']设置之后,Hugo 不再生成 sitemap.xml(以及多语言项目的索引文件),适合本身不公开、也不希望被搜索引擎建立索引的站点。