Netlifyを使ってリンク切れさせずにサイトを引っ越す方法

経緯(本題は下にあります)

Blueskyが流行りはじめて数か月経ちましたね。 このSNSはいろいろ画期的なんですが、ぱっと目につくのは公式マークの代わりにドメインを使って本人を表すところです。 たとえば、Bluesky運営のアカウントは@bsky.appというアプリ自体のドメインをユーザ名にすることで本物であることを証明しています。

そんな環境にいると自分もドメインを使ったユーザ名を使いたくなるわけなんですが、最近使っていたドメインはちょっと長すぎます。 そしてユーザ名のために短いドメインを用意したが運の尽き、ほかのWebサイト等も全部乗り換えたくなってしまいました。

前ブログでの『このサイトを作るときに気をつけたこと』にも書いたように、URLというのは変わらないことがまずもって大事なわけです。 にもかかわらず1年たたずに乗り換えとは言語道断ですが、せめてもの償いに301 Redirectを設定したので手順をまとめておきます。

本題

この記事では、Netlifyを利用してGitHub Pagesで公開していたサイトの新サイトへのリダイレクトを行います。

リダイレクトの設定ファイルを作成する

_redirectsというファイルをプロジェクトのルートに置くことでリダイレクトが可能です。

フォーマットは、リダイレクト元オプションを順にスペース区切りで並べます。

たとえば、旧kakudokentaro.comからのリダイレクト設定を簡単に書くと以下のようになります。

/       https://kakudo.org/            301!
/about/ https://kakudo.org/about/      301!
/blog/* https://kakudo.org/blog/:splat 301!
/       https://kakudo.org/            301!
/about/ https://kakudo.org/about/      301!

この行は//about/に来たアクセスをkakudo.orgにステータスコード301でリダイレクトしています。最後の!は強制リダイレクトを表していて、たとえ既存のサイトに該当ページが存在してもリダイレクトを行います。今回は引っ越しが目的なので旧サイトのページは無視してもらう必要があります。

/blog/* https://kakudo.org/:splat      301!

既存ページをすべてリストアップして、ひとつひとつ対応付けてももちろん良いのですが、あまりに面倒なのでまとめて設定する方法が用意されています。 それがSplatsで、*でマッチした文字列を:splatに展開できます。

Redirects and rewrites | Netlify Docs

設定ファイルを「生成後」にルートに来る位置に置く

あとはデプロイするだけなんですが、一応注意しておくべきなのは、設定ファイルは生成後のルートに来る必要があるということです。 たとえば、Hugoなどの静的サイトジェネレータを利用している場合、_redirectsはプロジェクトルートではなくstaticディレクトリに置く必要があります。

DNSを書き換える

Netlifyのダッシュボードに全て手順が書いてある通りに、旧サイトで利用しているドメインのDNSを書き換えます。 Google DomainsはALIASレコード等に対応していなかったので、Aレコードをダッシュボードに書いてある値に書き換えました。

これで旧サイトに来たアクセスはすべて新サイトにリダイレクトされます!

おわりに

まだ始めたばかりで全然知り合いがいないので、ぜひ繋がってください・・・。

Bluesky @kakudo.org