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

NextJS 14(App Router)中如何同时实现URL内部重写与添加请求头

在Next.js 14(App Router)中同时实现URL重写与自定义请求头

在Next.js 14的App Router中,无需分开调用NextResponse.next()和NextResponse.rewrite(),直接通过NextResponse.rewrite()的配置参数就能同时完成URL重写和请求头设置。

完整实现代码

export const middleware = async (request: NextRequest) => {
  // 替换为你实际的locale解析逻辑和路径处理
  const resolvedLocale = "zh-CN";
  const pathname = request.nextUrl.pathname;

  // 修改目标URL路径
  request.nextUrl.pathname = `/${resolvedLocale}${pathname}`;

  // 基于原请求头创建新实例,添加自定义头
  const requestHeaders = new Headers(request.headers);
  requestHeaders.set('x-pathname', pathname);

  // 同时返回重写后的URL和自定义请求头
  return NextResponse.rewrite(request.nextUrl, {
    request: {
      headers: requestHeaders
    }
  });
};

关键说明

  • NextResponse.rewrite()的第二个参数支持传入request配置,用法和NextResponse.next()完全一致,可直接在这里设置自定义请求头。
  • 必须基于原request.headers创建新的Headers实例,避免直接修改原请求头对象引发的不可预期问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 18:55:56