beta

HUGOで独自permalinkを設定したsectionのindexURLの設定方法

HUGOで独自permalinkを設定すると、Sectionのindex(トップ)のURLがディレクトリ名になってしまいます。その場合のSection設定方法をまとめました。

公開日:2020年8月5日

HUGOのPermalinkとSectionの関係

HUGOは、config.tomlでセクション単位のPermalinkを決めることができます。

permalinks:
   blog: /b/:year/:month/:day
   static: /:slug
}

こう言うやつです。

しかし、これには罠があって、個別ページ(HUGO的には.Kindがpage)にはこのPermalinkルールが適用されますが、indexページ、つまりSetionトップ(HUGO的には.Kindがsection)には適用されません。

上の設定の場合、

/content/blog/_index.md

があった場合に、Setionのトップ(index.html)が生成されますが、

/b/index.html

ではなく、

/blog/index.html

として生成されます。

これでも問題ないと言えばそうなのですが、ディレクトリ階層でパンくずリストを生成している場合などに都合が悪いので、修正が必要です。

SetionトップのURLをPageのPermalinkに合わせる方法

Setionトップの設定は、_index.mdで行うので、そこにurl設定をすれば解決します。

---
title: ブログトップ
PublishDate: "2020-07-27T02:26:45.000Z"
Lastmod: "2020-07-31T12:17:49.000Z"
url: "/b/"
---

Section毎に設定するのはやや面倒な気はしますが、Sectionはそこまでページが多くないので、個別に設定するのが一番の近道です。

なお、この方法で設定しておけば、テンプレートはsection.htmlが適用されます。

他の解決方法としては、「Section名と同じカテゴリ名を設定して、そちらでTaxonomy的に処理する」ことも可能ですが、ビルドが重くなる上にURL的にも重複する可能性が出てくるのでオススメできません。


HUGOで独自permalinkを設定したsectionのindexURLの決め方を見てきました。

この辺りはHUGOの「ファイル構造を前提とする」部分が悪い方向に出てしまっていますが、使い方さえ覚えれば、他の静的サイトジェネレータよりも自由度は高いので、コツを掴めば色々なサイトでHUGOが利用できそうですね。