Hugo で URL のカスタマイズ

この記事は書かれてから1年以上が経過しており、最新の情報とは異なる可能性があります

ちょっとしたメモも気軽に残せるので、WordPress から Hugo (というか Static Site Generator)に移行して本当に良かったですね。

Hugo の URL のカスタマイズに関して、ちょっと勘違いしてたのでメモっておきます。

Hugo で URL の設定が有効になる順番

  1. 各記事の content/post/foobar.md, frontmatter 内にある url = “/archives/foobar/” などの記述
  2. config.toml 内にある permalinks の設定

まず WordPress から Hugo に移設した時点で、移設された記事には url = “/archives/1003” などのように 元々の URL がこちらの url の値に入ってくれるので、 こちらを元に移設前と同じ URL で問題なく表示してくれます。

ちなみに frontmatter というのは、記事の上にあるメタ情報一式がある部分のことです。(プラス3つの行で挟まれた部分のこと)

うちのブログの場合は、元が WordPress の post テーブルに紐付いた形の連番になっていたので、 この /archives/1003 の数字の部分がけっこうな歯抜けになってました。 これをそのまま踏襲するのはちょっと考えにくかったため、 (それと1日に何記事も書くことはないというのもあって、) 新たに書いた記事からは /archives/yyyymmdd/ といった日付8桁になるように URL のルールを設けました。

こういった場合、大元の設定ファイルにきちんとパーマリンクの設定項目があるので、 そちらに沿ってルールを記載することで適切にパブリッシュされます。

https://gohugo.io/extras/permalinks/

なので、今回以下のような修正を加えてその辺りを改善しています。 差分を貼り付けるとこんな感じです。

diff --combined themes/bauerlog/archetypes/default.md
index f610471,f17a62b..0000000
--- a/themes/bauerlog/archetypes/default.md
+++ b/themes/bauerlog/archetypes/default.md
@@@ -3,5 -3,6 +3,5 @@@ author     = "girigiribauer
  layout     = "post"
  categories = ["tech"]
  tags       = []
 -url = "/archives/yyyymmdd/"
  +++

url = “/archives/yyyymmdd/” という仮の記述を入れておき、あとで記事内容が決まったら日付を入れようと思ってたのですが、そもそも入れなくて良かったので削除しています。

代わりに config.toml にこんな設定を追加しました。(抜粋)

[permalinks]
post = "/archives/:year:month:day/"

hugo コマンドを入力してパブリッシュされた時点の日付がここに入るので、こちらの意図した URL になってくれます。

参考URL

この記事は書かれてから1年以上が経過しており、最新の情報とは異なる可能性があります

もし記事内に誤りなどございましたら、 @girigiribauer @girigiribauer.com までご一報いただけると助かります。

Related articles