HUGOで必要最低限なサイトマップを作る

記事内に商品プロモーションを含む場合があります。
最終更新日:2019年3月31日

サイトマップを作る

HUGO はデフォルトで sitmap.xml を出力する機能がついています。
内容がすべてのページを対象にしているため、robots.txt でクロールさせたくない URL も出力されます。
GoogleSearchConsole 上でブロックされた旨のログが残りますので、カスタマイズすることで必要ない URL を書き出さないようにするといったことが可能になります。

sitemap.xml のひな型を作る

このサイトで生成している sitemap.xml のひな型です。
sitemap.xml というファイルを作成して、layouts ディレクトリの下に配置することで、機能します。

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{{ range .Data.Pages }}{{ if .IsPage }}
<url>
<loc>{{ .Permalink }}</loc>
{{ if not .Lastmod.IsZero }}
<lastmod>{{ safeHTML ( .Lastmod.Format "2006-01-02T15:04:05-07:00" ) }}</lastmod>
{{ end }}
</url>
{{ end }}{{ end }}
</urlset>

コードの解説

sitemap.xml を生成するにあたってポイントとなる部分は 3 つあります。

{{ range .Data.Pages }}{{ end }}

HUGO が生成するページのすべてをループで回して sitemap.xml に書き出します。

{{ if .IsPage }}{{ end }}

tags などリンクがメインとなるようなページは sitemap.xml に書き出さないように判定しています。

{{ if not .Lastmod.IsZero }}{{ end }}

ページの lastmod が取得できな場合は<lastmod>タグを出力しないようにしています。

まとめ

robots.txt の内容と合わせて作るのがよいと思います。
このサイトでは、tags ページは robots.txt でブロックするようにしていますので、このようなコードになっています。
今後、アナリティクスやサーチコンソールのデータを見ながら調整していくつもりです。

hugoで生成した静的ページをCircleCIでさくらのレンタルサーバへ自動アップ

hugoで生成した静的ページをCircleCIでさくらのレンタルサーバへ自動アップ

hugoのshuffleを使って記事の並び順をランダムにする方法

hugoのshuffleを使って記事の並び順をランダムにする方法

hugoのserverコマンドで使えるオプションをまとめた

hugoのserverコマンドで使えるオプションをまとめた

hugoのarchetypeを使って記事のテンプレート

hugoのarchetypeを使って記事のテンプレート

hugoのショートコードを使ってコードの掲載を効率化

hugoのショートコードを使ってコードの掲載を効率化

ubuntu 16.04 LTSに最新のhugoをインストールする方法

ubuntu 16.04 LTSに最新のhugoをインストールする方法