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

NextJS使用next-translate做多语言路由时英文路径返回404如何解决

这个问题需要同时从配置文件、静态生成路由逻辑、Link组件三个层面共同修正,单独修改某一处无法解决问题:

1. 修正next.config.js的rewrites配置

你之前的rewrites配置有两处错误:一是destination没有保留动态slug参数,二是只适配了en单一语言,修改后配置如下:

require('dotenv').config();
const nextTranslate = require('next-translate');

module.exports = nextTranslate({
    async rewrites() {
        return [
            {
                source: '/:locale(en|tr)/post/:slug',
                destination: '/post/:slug',
            },
        ]
    },
    env: {
        NEXT_PUBLIC_URL: process.env.NEXT_PUBLIC_URL,
    },
})

2. 修正[slug].js的静态生成逻辑

你当前设置了fallback: false,要求所有可访问的路径必须在构建阶段预生成,但你之前的getStaticPaths没有为每个语言生成对应路径,所以en前缀的路径根本没有对应静态文件,自然返回404。
修改后的getStaticPaths和getStaticProps如下:

export async function getStaticPaths({ locales }) {
   const { data } = await fetch('fromAPI');
   const paths = []
   // 遍历所有支持的语言,为每个语言生成对应访问路径
   for (const locale of locales) {
     data.forEach(item => {
       paths.push({
         params: {
           slug: `${slug(item.title)}-${item.id}`
         },
         locale
       })
     })
   }
   return {
        paths,
        fallback: false
    }
}

export async function getStaticProps({ params, locale }) {
    // 拉取对应语言的文章数据,避免不同语言返回相同内容
    const { data } = await fetch(`fromAPI?slug=${params.slug}&locale=${locale}`);
    return { props: { data } }
}

如果文章量级大不想全量预生成,可以把fallback改为'blocking',首次访问未预生成的路径时会自动动态生成静态文件。

3. 修正Link组件的多语言适配

next-translate会自动给非默认语言的路径加locale前缀,你需要让Link组件适配当前语言:

// 方案1:使用原生Link,手动传入当前语言
import Link from 'next/link'
import useTranslation from 'next-translate/useTranslation'

// 组件内部获取当前激活的语言
const { lang } = useTranslation()
<Link 
  key={`L${item.id}`} 
  href="/post/[slug]" 
  as={`/post/${slug(item.title)}-${item.id}`}
  locale={lang}
>
</Link>

// 方案2:直接使用next-translate提供的TransLink组件,自动适配语言
import TransLink from 'next-translate/TransLink'

<TransLink 
  key={`L${item.id}`} 
  href="/post/[slug]" 
  as={`/post/${slug(item.title)}-${item.id}`}
>
</Link>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:54:03