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

wswtfjt7  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(102)

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

然后我把这两个文件移到[lang]文件夹中,因为我需要在我的page.tsx中获取locale参数。一切正常,除了当我第一次运行网站时,它没有重定向到/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]文件夹。

lskq00tm

lskq00tm1#

之前有app/page.tsx。这意味着/路由将正常工作。
然后将该文件移动到app/[lang]/page.tsx,这意味着/[lang]路由可以工作。但是/不能工作。
要使/工作,您需要:

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

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

相关问题