Hugoで特定ページをリダイレクトする

Hugoで書いている本ブログのパスを変えたかった。静的サイトではできないんじゃないのと思っていたができたのでまとめておく。

Aliases | Hugo 方法はドキュメントに記載されている。記事ソースののFront Matterでaliasesを定義すればよい。

+++
slug = ""
tags = ["", ""]
title = "3Dプリンタ IUSE IUM1 を買った"
date = "2020-09-06T13:34:00+09:00"
aliases = ["/blog/3d-printer-1/"]      # /blog/3d-printer-1/から本来のURLへリダイレクトされる
+++

一括でソースを更新する

今回、自分は記事URLのPrefixを一括で変えたかったので、各ソースを一括で更新するスクリプトを書いた。

--- a/config.toml
+++ b/config.toml
 [permalinks]
-  post = "/blog/:filename/"
+  post = "/post/:filename/"

旧URLには検索サイトからインデックスが貼られているので、旧URLから新URLへのリダイレクトを設定する。 以下のスクリプトで記事ソースにaliases行を追加していく。

#!/bin/bash

for file in content/post/*.md; do
  filename=$(basename ${file})
  postname=${filename%.md}
  insert="aliases = [\"/blog/${postname}/\"]"
  sed -i "6i${insert}" ${file}
done

自分の場合は一律でファイルの6行目に挿入でよかったが、各ソースで行数が異なる場合はもう少し丁寧にsedのオプションを書く必要があるかもしれない。

以上

関連記事

comments powered by Disqus