no7.space
😿

Next.js でカスタム Not Found ページを作る

Next.js の 404 ページって、デフォルトだとこんな感じの、すごく味気ない感じのエラー画面なんですよね

next default 404

なので、すこしいじってみたいとおもいます。

カスタム 404 ページの作り方

Next.js の場合、Pages Router か、 App Router かでカスタムエラーファイルの設置位置やファイル名が異なってくるようです。

App Router の場合

今回は App Router なのでこっちです。
App Router を使ってる場合は、

app/not-found.tsx

にエラーページを作ればOK

import styles from './page.module.scss'

export default function NotFoundPage() {
  return (
    <main className={styles.is404}>
      <div className={styles['error-message-container']}>
        <div className={styles['error-message']}>
          <p className={styles['page-title']}>404 - Not Found</p>

          <p>お探しのページは見つかりませんでした。</p>
          <p>We are sorry, the page you requested cannot be found.</p>
          <p>
            <a href="/">TOP</a>
          </p>
        </div>
        <img src="/assets/img/notfoundimg.webp" alt="NOTFOUND" />
      </div>
    </main>
  )
}

で、スタイルを調整してあげれば、こんな感じでカスタムエラー画面の完成です

custom 404

Pages Router の場合

ちなみに、Pages Router を使ってる場合は

pages/404.js

というふうに pages 配下に設置すれば良いみたいです。

参考

https://nextjs.org/docs/pages/building-your-application/routing/custom-error
https://maxschmitt.me/posts/nextjs-404-page-app-router