モンモンブログ

技術的な話など

Nuxt.js + Netlifyで404 Not Foundをトップページにリダイレクト

動作環境

$ node -v
v13.2.0
$ npx nuxt -v
@nuxt/cli v2.10.2

Nuxt.js で 404 をトップページにリダイレクト

Nuxt.js 製のサイトで存在しないページへアクセスすると、デフォルトでは画像のような 404 Not Found ページが表示されます。

f:id:ymdsmn:20200130154957p:plain
Nuxt.js のデフォルトの 404 エラーページ

これをトップページ / にリダイレクトするように変更するのは超カンタンです。

pages/*.vue という名前のファイルを作って、 / にリダイレクトする処理を書くだけ。

特殊なファイル名なので、ターミナル上で操作する際は \* をエスケープしてやりましょう。

$ vi pages/\*.vue

内容はこれだけ。

<script>
export default {
  asyncData({ redirect }) {
    return redirect('/')
  }
}
</script>

http://localhost:3000/hogehoge のような存在しないページへアクセスして確認しましょう。 http://localhost:3000 にリダイレクトすればOK。

Netlify でも 404 をトップページにリダイレクト

ところが、これを Netlify にデプロイすると、今度は Netlify の 404 ページが表示されてしまいます。

f:id:ymdsmn:20200130161012p:plain
Netlify のデフォルトの 404 エラーページ

これも / へリダイレクトするように設定しましょう。ドキュメントルートに _redirects というプレーンテキストファイルを置いて設定してやるだけです。(参考: Redirects and rewrites | Netlify Docs

$ vi static/_redirects
/*  /   200
/*  /   404

デプロイして、存在しないページへアクセスして確認しましょう。/ にリダイレクトすればOK。

ハッピー?