Next.js 13でのページリダイレクトの方法


  1. プログラム的なページリダイレクト: Next.jsでは、next/routerモジュールを使用してプログラム的なページリダイレクトを実現できます。以下は、URLのリダイレクトの例です。

    import { useRouter } from 'next/router';
    function MyComponent() {
     const router = useRouter();
     // リダイレクトを実行するハンドラー
     const handleRedirect = () => {
       router.push('/new-page');
     };
     return (
       <button onClick={handleRedirect}>別のページにリダイレクト</button>
     );
    }
  2. 静的なリダイレクト: next.config.jsファイルを使用して、静的なページリダイレクトを設定することもできます。以下は、next.config.jsファイルの例です。

    module.exports = {
     async redirects() {
       return [
         {
           source: '/old-page',
           destination: '/new-page',
           permanent: true, // 恒久的なリダイレクト
         },
       ];
     },
    };

    上記の例では、/old-pageへのアクセスは自動的に/new-pageにリダイレクトされます。

  3. 動的なリダイレクト: 動的なパスに基づいてリダイレクトを行いたい場合、getServerSidePropsまたはgetStaticPropsを使用することができます。以下は、getServerSidePropsを使用した例です。

    export async function getServerSideProps(context) {
     const { params } = context;
     const { id } = params;
     // idに基づいてリダイレクト先のURLを取得する処理
     const redirectUrl = await fetchRedirectUrl(id);
     return {
       redirect: {
         destination: redirectUrl,
         permanent: true,
       },
     };
    }

    上記の例では、/dynamic-page/:idへのアクセスは、fetchRedirectUrl関数を使用してリダイレクト先のURLを取得し、そのURLにリダイレクトされます。

これらはNext.js 13でのページリダイレクトのいくつかの例です。使い方に応じて適切な方法を選択してください。