WordPressからHugoへのブログ移行を進めている。今日は大きく2つの作業を行った。
サイト内リンクの自動変換
WordPressでは記事のURLが /archives/{記事ID} という形式だった。Hugo では /post/{slug}/ に変わるので、記事本文中のリンクも書き換える必要がある。
WP REST API から全15,444記事のID→slugマップを一括取得し、JSONファイルにキャッシュ。エクスポート時に正規表現で以下のように変換するようにした。
| WordPress | Hugo |
|---|---|
/archives/12345 | /post/{slug}/ |
/archives/tag/babymetal | /tags/babymetal/ |
/archives/category/技術 | /categories/技術/ |
マップにないIDはそのまま残してログに警告を出す。サンプル25記事で試したところ、すべてのリンクが正しく変換された。
Cloudflare Pagesでステージング公開
Hugo の静的サイトをホスティングする先として Cloudflare Pages を選んだ。無料で、Cloudflare DNS との相性も良い。
手順はシンプルだった。
wrangler pages project create hide10-blogでプロジェクト作成hugo --minifyでビルドwrangler pages deploy site/publicでデプロイ- Cloudflare DNS に
new.hide10.com→hide10-blog.pages.devの CNAME を追加
これで new.hide10.com にステージング環境ができた。
現状の構成
WordPressは www.hide10.com で引き続き稼働中。Hugo は new.hide10.com で並行運用。画像は両方とも images.hide10.com(Cloudflare R2)から配信している。
全量エクスポートが完了したら DNS を切り替えて、Hugo を本番にする予定。