5000164 is here
My writing is my life.
No results for undefined
Powered byAlgolia
Hugo のブログの記事の URL を変更した時のログ

ブログの記事の URL を変更した。
今までは blog.5000164.jp/2018-1-format/ のような形式だったものを blog.5000164.jp/2018/1/19/format/ という形式にした。
今までの形式にしていた理由としては、ドメインの直下に記事の URL がぶら下がってるのかっこいい、と思っていたから。
新しい形式にした理由としては、年月日で階層が分かれてたほうがセマンティックでかっこいい、と思ったから。

変更前の状態

  • 記事のファイルの構成は 2018/01/format.md のような感じで年月で分けて、月はゼロ埋めで 2 桁にしてある
  • 記事の URL は url = "2018-01-format" のような感じで記事 1 つ 1 つに設定してある
  • 記事の作成日は date = 2012-10-15T03:16:25+00:00 のような感じで 1 つ 1 つに設定してある

変更後の状態

  • 記事のファイルの構成は 2018/1/19/format.md のような感じで作成日の年月日で分かれるようにして、月日のゼロ埋めはしない
  • 記事の URL は指定せずにディレクトリ構成のままでいくので URL の設定を削除する
  • 過去の URL にアクセスした時に新しい記事にリダイレクトさせる

変更方法

手作業で簡単にできるものじゃないと思ったのでツールを作った。

やっていることはこんな感じ。

  • 変更前のファイルの一覧を洗い出す
  • ファイル 1 つ 1 つ処理をしていく
  • 変更前のファイルの中身を読み取る
  • 変更前のファイルパスと date の行から変更後のファイルパスを計算する
  • 変更前の url の行を aliases に書き換える
  • 古いファイルを削除して変更後のファイルパスに変更後の内容を書き込む

ツールを作ってファイルの構成が変わった後は、 relref を使ってサイト内にリンクを張っているものを直した。
こちらは数が少なかったので使っているところを検索して手で直した。

感想

URL が変えられて気持ちがいい。
blog.5000164.jp/2018/ にアクセスしたら 2018 年の記事一覧が出てくるようにできた。
本当は blog.5000164.jp/2018/1/ にアクセスしたら 2018 年 1 月の記事一覧が出てくるというところまでやりたかったのだが、 Hugo の section は 1 つしか持てないという制約で難しそうだったので諦めた。

ちょっとしたツールを Scala で書くことができて嬉しい。
var を使わないで書くのが難しかったけど、結果的には実装できてよかった。

参考