You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Next.js中间件中设置301重定向?

在Next.js的middleware.js中设置重定向状态码

在Next.js的Middleware里,你可以通过NextResponse.redirect()方法的第二个参数指定重定向的HTTP状态码,具体实现如下:

基础用法示例

import { NextResponse } from 'next/server'

export function middleware(request) {
  // 永久重定向(301状态码)到目标URL
  if (request.nextUrl.pathname === '/old-path') {
    return NextResponse.redirect(new URL('/new-path', request.url), 301)
  }

  // 临时重定向(302状态码,显式指定)到目标URL
  if (request.nextUrl.pathname === '/temp-old') {
    return NextResponse.redirect(new URL('/temp-new', request.url), 302)
  }
}

关键说明

  • NextResponse.redirect()的第二个参数支持标准HTTP重定向状态码,常用的包括301(永久重定向)、302(临时重定向)、307(临时重定向,保留原请求方法)、308(永久重定向,保留原请求方法)。
  • 若不指定第二个参数,Next.js 13+版本默认使用307状态码,旧版本可能默认302,需注意版本差异。
  • 使用前必须导入NextResponse工具类,这是处理Middleware响应的核心依赖。

保留请求方法的重定向示例

如果需要重定向时保留原请求的HTTP方法(比如POST、PUT请求),可以使用307或308状态码:

import { NextResponse } from 'next/server'

export function middleware(request) {
  // 永久保留请求方法的重定向(308)
  if (request.nextUrl.pathname === '/old-post-endpoint') {
    return NextResponse.redirect(new URL('/new-post-endpoint', request.url), 308)
  }
}

内容的提问来源于stack exchange,提问作者Ali EXE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 07:30:55