diff --git a/app/[lang]/[[...mdxPath]]/page.tsx b/app/[lang]/[[...mdxPath]]/page.tsx index 289accf..23603bf 100644 --- a/app/[lang]/[[...mdxPath]]/page.tsx +++ b/app/[lang]/[[...mdxPath]]/page.tsx @@ -10,8 +10,8 @@ const DEFAULT_LOCALE = 'en' export async function generateMetadata(props) { const params = await props.params const { metadata } = await importPage(params.mdxPath, params.lang) - const path = params.mdxPath ? `/${params.lang}/${params.mdxPath.join('/')}` : `/${params.lang}/` - const subPath = params.mdxPath ? `/${params.mdxPath.join('/')}` : '/' + const path = params.mdxPath ? `/${params.lang}/${params.mdxPath.join('/')}/` : `/${params.lang}/` + const subPath = params.mdxPath ? `/${params.mdxPath.join('/')}/` : '/' const languages: Record = {} for (const l of LOCALES) { languages[l] = `https://docs.sharpapi.io/${l}${subPath}` diff --git a/next.config.mjs b/next.config.mjs index deeac3d..2c2c1e3 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -7,6 +7,7 @@ const withNextra = nextra({ export default withNextra({ output: 'export', + trailingSlash: true, images: { unoptimized: true }, // Nextra reads i18n config, extracts locales, then removes it (App Router compatible) i18n: { diff --git a/scripts/generate-sitemap.mjs b/scripts/generate-sitemap.mjs index 544cfad..f3669ae 100644 --- a/scripts/generate-sitemap.mjs +++ b/scripts/generate-sitemap.mjs @@ -64,7 +64,7 @@ async function lastmod(file) { } function url(locale, route) { - const path = route ? `/${locale}/${route}` : `/${locale}` + const path = route ? `/${locale}/${route}/` : `/${locale}/` return `${HOST}${path}` }