404ページ

存在しないURLへアクセスしたときに表示するページを作ります。ministaでは通常のページと同じように404.htmlを生成し、公開先で404ページとして配信するよう設定します。

Table of Contents

ページを作る

src/pages/404.tsxを作成します。pluginSsg()を設定した構成であれば、追加のプラグインは不要です。

src/pages/404.tsx
import type { Metadata } from "minista/types"

export const metadata: Metadata = { title: "ページが見つかりません" }

export default function NotFound() {
  return (
    <>
      <h1>ページが見つかりません</h1>
      <p>URLが変更されたか、ページが削除された可能性があります。</p>
      <a href="/">トップページへ戻る</a>
    </>
  )
}

トップページへのリンクは、サイトの公開先に合わせます。/site/へ公開する場合は、href="/site/"に変更してください。タイトルをHTMLのheadへ反映する方法は、レイアウトで紹介します。

構成と出力を確認する

既存のページに404.tsxを追加すると、ビルド結果に404.htmlが加わります。以下は関係するファイルだけを示しています。

プロジェクト構成
src/pages/
├── index.tsx
├── about.md
└── 404.tsx
ビルド結果
dist/
├── index.html
├── about.html
└── 404.html

Markdownで作る場合は404.md、MDXなら404.mdxでも同じファイル名で出力されます。同じURLのページが競合するため、いずれか一つを使用します。

表示を確認する

npm run devで開発サーバーを起動し、/404を開いて内容を確認します。ビルド後はnpm run previewで/404.htmlを確認できます。

404ページを直接開く確認と、存在しないURLで表示される確認は別です。存在しないURLに対する表示とHTTPステータスは、公開先で確認します。

公開先で404ページを設定する

dist/の中身を公開し、存在しないURLへの応答に404.htmlを使うよう、ホスティング側で設定します。404.htmlという名前だけで自動的に利用するサービスもあります。公開先の設定方法を確認してください。

公開後に存在しないURLへアクセスし、作成したページが表示されることと、HTTPステータスが404であることを確認します。

404ページは/news/missing/など、さまざまな階層のURLで表示されます。トップページやアセットへの相対参照は、そのURLから解決されるためリンク切れになることがあります。共通の404ページには、base: "/"やbase: "/site/"のように公開先を指定する構成が適しています。詳しくはビルドとデプロイを参照してください。

次はページへデータを渡すで、metadataとgetStaticData()からpropsを渡す方法を紹介します。