HugoブログをCloudflare Pagesにデプロイした

WordPress から Hugo への移行作業。内部リンクの自動変換を実装し、Cloudflare Pages でステージング環境を構築した。

WordPressからHugoへのブログ移行を進めている。今日は大きく2つの作業を行った。

サイト内リンクの自動変換

WordPressでは記事のURLが /archives/{記事ID} という形式だった。Hugo では /post/{slug}/ に変わるので、記事本文中のリンクも書き換える必要がある。

WP REST API から全15,444記事のID→slugマップを一括取得し、JSONファイルにキャッシュ。エクスポート時に正規表現で以下のように変換するようにした。

WordPressHugo
/archives/12345/post/{slug}/
/archives/tag/babymetal/tags/babymetal/
/archives/category/技術/categories/技術/

マップにないIDはそのまま残してログに警告を出す。サンプル25記事で試したところ、すべてのリンクが正しく変換された。

Cloudflare Pagesでステージング公開

Hugo の静的サイトをホスティングする先として Cloudflare Pages を選んだ。無料で、Cloudflare DNS との相性も良い。

手順はシンプルだった。

  1. wrangler pages project create hide10-blog でプロジェクト作成
  2. hugo --minify でビルド
  3. wrangler pages deploy site/public でデプロイ
  4. Cloudflare DNS に new.hide10.comhide10-blog.pages.dev の CNAME を追加

これで new.hide10.com にステージング環境ができた。

現状の構成

WordPressは www.hide10.com で引き続き稼働中。Hugo は new.hide10.com で並行運用。画像は両方とも images.hide10.com(Cloudflare R2)から配信している。

全量エクスポートが完了したら DNS を切り替えて、Hugo を本番にする予定。

Hugo で構築されています。
テーマ StackJimmy によって設計されています。