Next.js 应用程序路由器 i18n '/' 默认语言

Fab*_*oza 7 internationalization i18next reactjs next.js

我正在从 Next.js /pages迁移到/app,我有 2 种语言enes,默认语言是en,url 结构是:

英语

  • example.com/
  • example.com/blog/my-post

西班牙语

  • example.com/es
  • example.com/es/blog/mi-articulo

但是,当在应用程序路由器上集成 i18n 时,我创建了一个[lang]文件夹,并遵循以下任何指南后:

https://locize.com/blog/next-13-app-dir-i18n/

https://nextjs.org/docs/app/building-your-application/routing/internationalization

我在 /app/[lang] 上的结构是:

英语

  • example.com/en
  • example.com/en/blog/my-post

西班牙语

  • example.com/es
  • example.com/es/blog/mi-articulo

如果我访问example.com/,我将被重定向到example.com/en,如果我不解决这个问题,我当前的 SEO 就会出现问题,因为大多数 URL 都会发生变化。

小智 0

查看NextResponse 的重写 api

所以在nextjs的文档中,中间件的返回值是a Response.redirect(request.nextUrl),它将客户端重定向到包含区域设置信息的url。

替换为NextResponse.rewrite(request.nextUrl),新的 url 将仅在服务器内部接受,不会影响客户端。在某种程度上有点像“代理”。

* NextResponse 可以从 next/server 导入。