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

Next.js集成next-intl后静态资源返回404问题求助

解决next-intl集成Next.js后静态文件404的问题

问题原因

你的middleware.ts里的matcher配置匹配了所有路径(/:path*),包括静态资源请求(比如/favicon.ico、/images/**、/fonts/**等)。当next-intl中间件处理这些静态文件请求时,会尝试按照国际化逻辑去查找对应资源,但静态文件本身没有本地化版本,因此返回404错误。

解决方案

修改middleware.ts的config.matcher,排除静态文件路径,只让中间件处理页面路由请求。Next.js的matcher支持用!前缀来定义排除规则。

修改后的middleware.ts代码:

import createMiddleware from "next-intl/middleware";
import { locales, localePrefix } from "./navigation";

export default createMiddleware({
  locales,
  localePrefix,
  defaultLocale: "pl-pl",
});

export const config = {
  matcher: [
    // 匹配需要国际化处理的页面路由
    "/",
    "/:path*",
    "/(pl-pl|en-us)/:path*",
    // 排除静态资源路径,根据项目实际目录调整
    "!/favicon.ico",
    "!/images/:path*",
    "!/fonts/:path*",
    "!/css/:path*",
    "!/js/:path*",
    // 可选:排除无需国际化的API路由
    "!/api/:path*"
  ]
};

补充说明

  • 你可以根据项目中静态文件的实际目录结构调整排除规则,比如存在/assets目录时,添加"!/assets/:path*"。
  • 排除API路由是可选操作,如果你的API接口不需要国际化处理,建议加上该规则,避免中间件干扰正常的API请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 13:04:59