跳至内容
API 参考函数permanentRedirect

permanentRedirect

permanentRedirect 函数允许您将用户重定向到另一个 URL。permanentRedirect 可用于服务器组件、客户端组件、路由处理程序服务器操作

在流式上下文中使用时,这将插入一个元标记以在客户端发出重定向。在服务器操作中使用时,它将向调用方提供 303 HTTP 重定向响应。否则,它将向调用方提供 308 (永久) HTTP 重定向响应。

如果资源不存在,您可以改用 notFound 函数

注意:如果您希望返回 307 (临时) HTTP 重定向而不是 308 (永久),则可以使用 redirect 函数

参数

permanentRedirect 函数接受两个参数

permanentRedirect(path, type)
参数类型描述
path字符串要重定向到的 URL。可以是相对路径或绝对路径。
type'replace'(默认)或 'push'(服务器操作中的默认值)要执行的重定向类型。

默认情况下,permanentRedirect 将在 服务器操作 中使用 push(在浏览器历史记录堆栈中添加新条目),在其他所有地方使用 replace(替换浏览器历史记录堆栈中的当前 URL)。您可以通过指定 type 参数来覆盖此行为。

在服务器组件中使用时,type 参数无效。

返回值

permanentRedirect 不返回值。

示例

调用 permanentRedirect() 函数会抛出 NEXT_REDIRECT 错误并终止其抛出所在路由段的渲染。

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

注意permanentRedirect 不需要您使用 return permanentRedirect(),因为它使用 TypeScript never 类型。