From 252db31fd4300152204d528ed2d408c556987548 Mon Sep 17 00:00:00 2001 From: Pavel Vinogradov Date: Thu, 26 Feb 2026 17:54:59 +0300 Subject: [PATCH] feat: update canonical urls --- src/app/[[...slug]]/page.tsx | 3 +++ src/app/sitemap.ts | 30 ++++++++++++++++++------------ 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/app/[[...slug]]/page.tsx b/src/app/[[...slug]]/page.tsx index 354e51727..a58d3f82c 100644 --- a/src/app/[[...slug]]/page.tsx +++ b/src/app/[[...slug]]/page.tsx @@ -172,6 +172,9 @@ export async function generateMetadata(props: { params: Promise<{ slug?: string[ return metadataImage.withImage(page.slugs, { title: page.data.title, description: page.data.description, + alternates: { + canonical: page.url, + }, }); } diff --git a/src/app/sitemap.ts b/src/app/sitemap.ts index 587f7e88b..90ca4d801 100644 --- a/src/app/sitemap.ts +++ b/src/app/sitemap.ts @@ -6,19 +6,25 @@ export const revalidate = false; export default async function sitemap(): Promise { const url = (path: string): string => new URL(path, baseUrl).toString(); + const pages = await Promise.all( + source.getPages().map(async (page) => { + const { lastModified } = await page.data; - return [ - ...(await Promise.all( - source.getPages().map(async (page) => { - const { lastModified } = await page.data; + return { + url: url(page.url), + lastModified: lastModified ? new Date(lastModified) : undefined, + changeFrequency: 'weekly', + priority: 0.5, + } as MetadataRoute.Sitemap[number]; + }) + ); - return { - url: url(page.url), - lastModified: lastModified ? new Date(lastModified) : undefined, - changeFrequency: 'weekly', - priority: 0.5, - } as MetadataRoute.Sitemap[number]; - }) - )), + return [ + { + url: url('/'), + changeFrequency: 'weekly', + priority: 1, + }, + ...pages.filter((page) => page.url !== url('/')), ]; }