Nextjs [lang] 文件夹默认路由问题

问题描述 投票:0回答:1

在我将

layout.tsx
page.tsx
文件移动到
[lang]
文件夹之前,它看起来像这样

然后我将这两个文件移动到

[lang]
文件夹中,因为我需要在我的
page.tsx
中获取区域设置参数。一切正常,除了当我第一次运行网站时,它没有重定向到
/en/bootcamps
,正如我在 page.tsx 中配置的那样:

import { redirect } from "next/navigation";   const redirectToBootcamp = async () => {redirect(`en/bootcamps`);};export default async function Home({ params }: { params: { lang: string } }) { await redirectToBootcamp();return <main>{JSON.stringify(params)}</main>;}

它转到

/
并给出 404 错误。我怎样才能让它重定向到我想要的地方,并仍然将布局和页面文件保留在 [lang] 文件夹中。

redirect next.js internationalization directory-structure i18next
1个回答
0
投票

早些时候你有

app/page.tsx
。这意味着
/
路线可以正常工作。

然后您将该文件移至

app/[lang]/page.tsx
,这意味着
/[lang]
路线将起作用。但是
/
不会再工作了。

要使

/
正常工作,您需要:

  • app/page.tsx
    (就像之前一样),或者
  • /
     中创建从 
    /[lang]
    next.config.ts
  • 的重定向
async redirects() {
    return [
        {
            source: '/',
            destination: '/en',
        },
    ]
},

https://nextjs.org/docs/pages/api-reference/next-config-js/redirects

© www.soinside.com 2019 - 2024. All rights reserved.