見出し画像

next.js 404ページ リダイレクト処理

.htaccessファイルを使用して、存在しないページへのアクセス(404エラー)を別のページにリダイレクトする方法を以下に示します。

  1. .htaccessファイルの作成: プロジェクトのルートディレクトリに.htaccessファイルを作成します。もし既に.htaccessファイルが存在している場合は、既存のファイルを編集してください。

  2. 404エラーページのリダイレクト設定: .htaccessファイルに以下の設定を追加します。これにより、存在しないページへのアクセスが発生した場合、指定したURL(例: /404.html)にリダイレクトされます。

ErrorDocument 404 /404.html

上記の例では、/404.htmlにリダイレクトしていますが、リダイレクト先を変更したい場合は、/404.htmlの部分を適切なURLに置き換えてください。

3.リダイレクト先ページの作成: リダイレクト先として指定したページ(この例では404.html)を作成し、404エラーが発生したことを伝えるコンテンツを記述してください。このページは、通常のHTMLファイルとして作成できます。

これで、.htaccessファイルを使用して404エラーが発生した場合に別のページにリダイレクトする設定が完了しました。設定を適用するために、変更をウェブサーバーにアップロードしてください。

Next.jsでは、独自の404ページを作成してリダイレクト処理を実装することができます。以下に、Next.jsで404ページを作成し、リダイレクト処理を実装する方法を説明します。

Next.jsでは、独自の404ページを作成してリダイレクト処理を実装することができます。以下に、Next.jsで404ページを作成し、リダイレクト処理を実装する方法を説明します。

4.独自の404ページを作成: pagesディレクトリ内に404.jsファイルを作成し、独自の404ページのコンポーネントを定義します。例えば、次のようなシンプルな404ページを作成できます。

// pages/404.js
import React from 'react';
import Link from 'next/link';

const Custom404 = () => (
  <div>
    <h1>404 - Page Not Found</h1>
    <Link href="/">
      <a>Go back to home</a>
    </Link>
  </div>
);

export default Custom404;

この例では、独自の404ページに「404 - Page Not Found」というメッセージとホームページへのリンクが表示されます。

5.404ページへのリダイレクト処理を実装: ページが見つからない場合に404ページにリダイレクトする処理を実装するために、getServerSidePropsまたはgetStaticPropsを使用してページが存在しないかどうかをチェックします。

例えば、pages/post/[id].jsのような動的なルートがある場合、以下のようにgetServerSidePropsを使用してページが存在しないかどうかをチェックし、存在しない場合は404ページにリダイレクトします。

// pages/post/[id].js
import { useRouter } from 'next/router';

const Post = ({ post }) => {
  const router = useRouter();

  if (router.isFallback) {
    return <div>Loading...</div>;
  }

  return (
    <div>
      <h1>{post.title}</h1>
      <p>{post.content}</p>
    </div>
  );
};

export async function getServerSideProps(context) {
  const { id } = context.params;
  const post = await fetchPost(id); // fetchPostは実際のデータフェッチ関数に置き換えてください

  if (!post) {
    return {
      notFound: true,
    };
  }

  return {
    props: { post },
  };
}

export default Post;

この例では、fetchPost関数でデータを取得し、postが存在しない場合にnotFound: trueを返しています。これにより、Next.jsは自動的に独自の404ページにリダイレクトします。

この記事が気に入ったらサポートをしてみませんか?