UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Next.js】トップページにリダイレクトさせる

あるプロジェクトのサービス終了に伴い、ページにアクセスされたらトップページに全てリダイレクトをするように設定をしたく調べた

Next.jsのredirectsを使う

調べると next.config.js 内で redirects を使うのが良いことがわかった

nextjs.org

単純な使い方は以下

module.exports = {
  async redirects() {
    return [
      {
        source: '/about',
        destination: '/',
        permanent: true,
      },
    ]
  },
}

このsourceの部分を全ページにしたいので、*を駆使して記述してみた

module.exports = {
  async redirects() {
    return [
      {
        source: '/:path(.*)',
        destination: '/',
        permanent: true,
      },
    ]
  },
}

ただ、これだとトップページも含まれてしまい、リダイレクトのループが発生してしまう

なので、パスで分けて行うことにした(いいやり方がありそうだが)

module.exports = {
  async redirects() {
    return [
      {
        source: '/about/:path(.*)',
        destination: '/',
        permanent: true,
      },
      {
        source: '/news/:path(.*)',
        destination: '/',
        permanent: true,
      },
    ]
  },
}

とりあえず、これでやりたいことができた