Lang x Lang

permanentRedirect

permanentRedirect関数を使用すると、ユーザーを別の URL に redirect することができます。permanentRedirectは、 Server Components 、 Client Components 、Route ハンドラ、またはServer Actionsで使用することができます。

Streaming の context で使用された場合、これは client 側で redirect を発行するための meta タグを挿入します。server action で使用された場合、呼び出し元に対して 303 の HTTP redirect response を提供します。それ以外の場合、呼び出し元に対して 308(Permanent)の HTTP redirect response を提供します。

リソースが存在しない場合、代わりにnotFound functionを使用することができます。

Good to know: 308( Permanent )の代わりに 307(Temporary)の HTTP redirect を返すことを好むなら、代わりに redirect関数を使用できます。

Parameters

permanentRedirect 関数は二つの引数を受け入れます:

permanentRedirect(path, type);
パラメータTypeDescription
pathstringURL への redirect 。相対または絶対 path 可能です。
type'replace'( default )または 'push'( Server Actions での default )実行する redirect の type 。

default では、permanentRedirectServer Actionsではpush(ブラウザの履歴 stack に新しいエントリを追加)を使用し、それ以外の場合ではreplace(ブラウザの履歴 stack 内の現在の URL を置き換える)を使用します。この動作はtypeパラメータを指定することで上書きすることができます。

type パラメータは、Server Components で使用するときには効果がありません。

Returns

permanentRedirectはどんな value も返しません。

Example

permanentRedirect() 関数を呼び出すと、NEXT_REDIRECT error がスローされ、それがスローされた route セグメントのレンダリングが終了します。

app/team/[id]/page.js
import { permanentRedirect } from 'next/navigation'

async function fetchTeam(id) {
  const res = await fetch('https://...')
  if (!res.ok) return undefined
  return res.json()
}

export default async function Profile({ params }) {
  const team = await fetchTeam(params.id)
  if (!team) {
    permanentRedirect('/login')
  }

  // ...
}

Good to know: permanentRedirectreturn permanentRedirect()を使用することを require していません。これは、 TypeScript never type を使用しているためです。

当社サイトでは、Cookie を使用しています。各規約をご確認の上ご利用ください:
Cookie Policy, Privacy Policy および Terms of Use