permanentRedirect
Функция permanentRedirect позволяет перенаправить пользователя на другой URL. permanentRedirect может использоваться в компонентах сервера, компонентах клиента, обработчиках маршрутов и действиях сервера.
При использовании в контексте потоковой передачи данных эта функция вставит тег meta для отправки перенаправления на стороне клиента. При использовании в действии сервера она отправит ответ 303 HTTP-перенаправления вызывающему объекту. В противном случае она отправит ответ 308 (постоянное) HTTP-перенаправления вызывающему объекту.
Если ресурс не существует, можно использовать функцию notFound вместо неё.
Важно знать: Если вместо 308 (постоянного) вы предпочитаете возвращать 307 (временное) HTTP-перенаправление, можно использовать функцию
redirectвместо неё.
Параметры
Функция permanentRedirect принимает два аргумента:
permanentRedirect(path, type)
| Параметр | Тип | Описание |
|---|---|---|
path |
string |
URL для перенаправления. Может быть относительным или абсолютным путём. |
type |
'replace' (по умолчанию) или 'push' (по умолчанию в действиях сервера) |
Тип выполняемого перенаправления. |
По умолчанию, permanentRedirect будет использовать push (добавление новой записи в стек истории браузера) в действиях сервера и replace (замена текущего URL в стеке истории браузера) во всех остальных случаях. Это поведение можно переопределить, указав параметр type.
Параметр type не имеет эффекта при использовании в компонентах сервера.
Возвращаемое значение
Функция permanentRedirect не возвращает никаких значений.
Пример
Вызов функции permanentRedirect() генерирует ошибку NEXT_REDIRECT и прекращает рендеринг сегмента маршрута, в котором она была сгенерирована.
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')
}
// ...
}Важно знать: Функции
permanentRedirectне требуется использоватьreturn permanentRedirect(), так как она использует тип TypeScriptnever.
© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/app/api-reference/functions/permanentRedirect