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