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

使用next-intl拦截所有无Locale的请求并重定向的问题

解决next-intl中间件仅拦截根路径的问题

要让所有不带Locale的请求都重定向到对应Locale的URL,只需给中间件添加路径匹配配置,确保它作用于所有需要处理的路由:

import { createIntlMiddleware } from "next-intl/server";
import { NextRequest } from "next/server";

const intlMiddleware = createIntlMiddleware({
  locales: ["en", "de", "fr", "es"],
  defaultLocale: "en",
});

export default function middleware(request: NextRequest) {
  return intlMiddleware(request);
}

// 配置匹配规则:处理所有非静态资源、非Next.js内部路由的请求
export const config = {
  matcher: [
    "/((?!_next|fonts|.*\\..*).*)"
  ]
};

关键说明:

  • 原代码缺少config.matcher配置,导致Next.js默认未让中间件覆盖所有子路由。
  • matcher规则会排除_next(Next.js内部资源)、静态文件(如.js/.css/.png)等无需本地化的路径,只处理页面路由。
  • createIntlMiddleware本身会自动检测请求的Locale偏好(从Cookie、Accept-Language头),如果路径不带Locale前缀,就重定向到对应Locale的正确URL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:40:01