Netlifyでのリダイレクト設定:netlify.tomlを活用して特定パスを301リダイレクトする方法


目次

以前の記事では、Netlifyでのレスポンスヘッダーのカスタマイズ方法について解説しました。 今回は、同じくnetlify.tomlを活用して、特定のパスへのアクセスを別のパスへ301リダイレクトする方法をご紹介します。

Netlifyのレスポンスヘッダーをカスタマイズする

Netlifyで作成したサイトのレスポンスヘッダーをカスタマイズして、セキュリティ設定を整えた

どうしてこれが必要か、というと、Search Consoleをみていたところ、以下のように、意図していないtags/<タグ名>/index.xmlに対してのクロールエラーがあったのですよね。

こちらのサイトはHugoを利用していますが、そこらへんでどうも意図しないロジックがあるようです。

CDN側で対応できないかなぁと調べたところ、Netlifyではリダイレクトを設定する2通りの方法があるようでしたので、対応してみたというわけです。

  1. _redirectsファイルを用いる
  2. netlify.tomlファイルを用いる

本記事では後者のnetlify.tomlを利用した方法となります。

https://res.cloudinary.com/dlhmnejhz/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-02-22_14.15.38_eyyhmt.png
クロールエラー

Netlifyでは、netlify.tomlファイルを使用してリダイレクト設定を行うことができます。特定のURLパターンへのアクセスを別のURLにリダイレクトすることが可能で、その時のリダイレクトのレスポンスもカスタマイズができます。

例えば、/tags/fedore-coreos/index.xml/tags/datadog/index.xmlへのアクセスを、それぞれ/tags/fedore-coreos//tags/datadog/に301リダイレクトしたい場合、以下の手順で設定します。

This is a tip

リダイレクトをする時には、レスポンスコードによって、SEO上の使い分けがあります。

WEBサイトを運用する上で、主に利用するのは

  • 301 (永続的/恒久的なリダイレクト)
  • 302 (一時的なリダイレクト)

です。場合によって使い分けましょう。

ルートディレクトリにあるnetlify.tomlファイルを開き、以下の内容を追加します。

1
2
3
4
5
[[redirects]]
  from = "/tags/:tag/index.xml"
  to = "/tags/:tag/"
  status = 301
  force = true
解説

from = “/tags/:tag/index.xml” :tagは動的セグメントで、hogeやfugaなど任意のタグ名にマッチします。

to = “/tags/:tag/” fromの値をこのパスにリダイレクトします。この時、前述の動的セグメントを利用できます。

status = 301 恒久的なリダイレクトを示します。

force = true 既存のファイルが存在してもリダイレクトを強制します。Hugoの場合、こちらが必要でした。

netlify.tomlファイルを保存し、変更をgithubにコミットします。commit時に自動でNetlifyにデプロイされますので、デプロイが成功すると、設定したリダイレクトが有効になるはずです。

https://res.cloudinary.com/dlhmnejhz/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88_2025-02-22_14.30.03_wtmibd.png
301レスポンス後、意図したURLに200レスポンスで着地

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