For pages with translations, add links with hreflang attributes to the default sitemap template. This helps Google to show the correct language page in its search results. The syntax used is based on Google's example at [1]. Also update the sitemap template docs to reflect the changes in the default template. [1] https://support.google.com/webmasters/answer/2620865?hl=en&topic=2370587&ctx=topic Fixes #2569
2.5 KiB
aliases | lastmod | date | linktitle | menu | next | notoc | prev | title | weight | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
2015-12-10 | 2014-05-07 | Sitemap |
|
/templates/404 | true | /templates/rss | Sitemap Template | 95 |
A single Sitemap template is used to generate the sitemap.xml
file.
Hugo automatically comes with this template file. No work is needed on
the users' part unless they want to customize sitemap.xml
.
A sitemap is a Page
and have all the page
variables available to use in this template
along with Sitemap-specific ones:
.Sitemap.ChangeFreq The page change frequency
.Sitemap.Priority The priority of the page
.Sitemap.Filename The sitemap filename
If provided, Hugo will use /layouts/sitemap.xml
instead of the internal
one.
Hugo’s sitemap.xml
This template uses the version 0.9 of the Sitemap Protocol with Google's hreflang attributes for linking to translated content.
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
{{ range .Data.Pages }}
<url>
<loc>{{ .Permalink }}</loc>{{ if not .Lastmod.IsZero }}
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>{{ end }}{{ with .Sitemap.ChangeFreq }}
<changefreq>{{ . }}</changefreq>{{ end }}{{ if ge .Sitemap.Priority 0.0 }}
<priority>{{ .Sitemap.Priority }}</priority>{{ end }}{{ if .IsTranslated }}{{ range .Translations }}
<xhtml:link
rel="alternate"
hreflang="{{ .Lang }}"
href="{{ .Permalink }}"
/>{{ end }}
<xhtml:link
rel="alternate"
hreflang="{{ .Lang }}"
href="{{ .Permalink }}"
/>{{ end }}
</url>
{{ end }}
</urlset>
Important: Hugo will automatically add the following header line to this file on render. Please don't include this in the template as it's not valid HTML.
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
Configuring sitemap.xml
Defaults for <changefreq>
, <priority>
and filename
values can be set in the site's config file, e.g.:
[sitemap]
changefreq = "monthly"
priority = 0.5
filename = "sitemap.xml"
The same fields can be specified in an individual page's front matter in order to override the value for that page.