permanentRedirect

permanentRedirect işlevi, kullanıcıyı başka bir URL'ye yönlendirmenize olanak tanır. permanentRedirect Sunucu Bileşenlerinde, İstemci Bileşenlerinde, Rota İşleyicilerinde ve Sunucu Eylemlerinde kullanılabilir.

Bir akış bağlamında kullanıldığında, bu, istemci tarafında yönlendirmeyi yaymak için bir meta etiket ekleyecektir. Bir sunucu eyleminde kullanıldığında, arayan kişiye 303 HTTP yönlendirme yanıtı sunar. Aksi takdirde, arayan kişiye 308 (Kalıcı) HTTP yönlendirme yanıtı sunar.

Bir kaynak mevcut değilse, bunun yerine notFound işlevini kullanabilirsiniz.

Bilmekte fayda var: Eğer 308 (Kalıcı) yerine 307 (Geçici) HTTP yönlendirmesi döndürmeyi tercih ediyorsanız, bunun yerine redirect fonksiyonunu kullanabilirsiniz.

Parameters

permanentRedirect işlevi iki bağımsız değişken kabul eder:

permanentRedirect(path, type)
ParameterTypeDescription
pathstringThe URL to redirect to. Can be a relative or absolute path.
type'replace' (default) or 'push' (default in Server Actions)The type of redirect to perform.

Varsayılan olarak, permanentRedirect Sunucu Eylemlerinde push (tarayıcı geçmişi yığınına yeni bir girdi ekleme) ve diğer her yerde replace (tarayıcı geçmişi yığınındaki geçerli URL'yi değiştirme) kullanacaktır. Bu davranışı type parametresini belirterek geçersiz kılabilirsiniz.

type parametresinin Sunucu Bileşenlerinde kullanıldığında hiçbir etkisi yoktur.

Returns

permanentRedirect herhangi bir değer döndürmez.

Example

permanentRedirect() işlevinin çağrılması bir NEXT_REDIRECT hatası verir ve hatanın verildiği rota segmentinin işlenmesini sonlandırır.

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')
  }
 
  // ...
}

Bilmekte fayda var: permanentRedirect, TypeScript'i kullandığı için return permanentRedirect() kullanmanızı gerektirmez never tip.