Netlifyでのリダイレクト設定:netlify.tomlを活用して特定パスを301リダイレクトする方法
以前の記事では、Netlifyでのレスポンスヘッダーのカスタマイズ方法について解説しました。 今回は、同じくnetlify.tomlを活用して、特定のパスへのアクセスを別のパスへ301リダイレクトする方法をご紹介します。
どうしてこれが必要か、というと、Search Consoleをみていたところ、以下のように、意図していないtags/<タグ名>/index.xml
に対してのクロールエラーがあったのですよね。
こちらのサイトはHugoを利用していますが、そこらへんでどうも意図しないロジックがあるようです。
CDN側で対応できないかなぁと調べたところ、Netlifyではリダイレクトを設定する2通りの方法があるようでしたので、対応してみたというわけです。
_redirects
ファイルを用いるnetlify.toml
ファイルを用いる
本記事では後者のnetlify.toml
を利用した方法となります。

netlify.tomlによるリダイレクト設定
Netlifyでは、netlify.toml
ファイルを使用してリダイレクト設定を行うことができます。特定のURLパターンへのアクセスを別のURLにリダイレクトすることが可能で、その時のリダイレクトのレスポンスもカスタマイズができます。
設定手順
例えば、/tags/fedore-coreos/index.xml
や/tags/datadog/index.xml
へのアクセスを、それぞれ/tags/fedore-coreos/や/tags/datadog/に301リダイレクトしたい場合、以下の手順で設定します。
リダイレクトをする時には、レスポンスコードによって、SEO上の使い分けがあります。
WEBサイトを運用する上で、主に利用するのは
- 301 (永続的/恒久的なリダイレクト)
- 302 (一時的なリダイレクト)
です。場合によって使い分けましょう。
netlify.tomlファイルの編集
ルートディレクトリにあるnetlify.tomlファイルを開き、以下の内容を追加します。
|
|
from = “/tags/:tag
/index.xml”
:tagは動的セグメントで、hogeやfugaなど任意のタグ名にマッチします。
to = “/tags/:tag/”
fromの値をこのパスにリダイレクトします。この時、前述の動的セグメントを利用できます。
status = 301
恒久的なリダイレクトを示します。
force = true
既存のファイルが存在してもリダイレクトを強制します。Hugoの場合、こちらが必要でした。
デプロイ
netlify.tomlファイルを保存し、変更をgithubにコミットします。commit時に自動でNetlifyにデプロイされますので、デプロイが成功すると、設定したリダイレクトが有効になるはずです。

まとめ
netlify.toml
を利用することで、容易にリダイレクトを行うことが可能でした。以前の記事で紹介したレスポンスヘッダーのカスタマイズと合わせて、サイトの運用やSEO対策に役立ててください。