first publish
This commit is contained in:
commit
b8e41b4d55
147 files changed
+19367
No files matched your search
@@ -0,0 +1,42 @@
|
||||
import type { MetadataRoute } from "next";
|
||||
import { LANGS, routesByLang, type Lang, type PageKey } from "@/lib/i18n";
|
||||
import { site } from "@/lib/site";
|
||||
|
||||
/** Static export: metadata routes are prerendered; mark explicitly (Next static-exports guide). */
|
||||
export const dynamic = "force-static";
|
||||
|
||||
type ChangeFrequency = NonNullable<MetadataRoute.Sitemap[number]["changeFrequency"]>;
|
||||
|
||||
const pages: ReadonlyArray<{ page: PageKey; changeFrequency: ChangeFrequency; priority: number }> = [
|
||||
{ page: "home", changeFrequency: "monthly", priority: 1 },
|
||||
{ page: "coaching", changeFrequency: "monthly", priority: 0.8 },
|
||||
{ page: "trainings", changeFrequency: "monthly", priority: 0.8 },
|
||||
{ page: "keynotes", changeFrequency: "monthly", priority: 0.8 },
|
||||
{ page: "impressum", changeFrequency: "yearly", priority: 0.2 },
|
||||
{ page: "datenschutz", changeFrequency: "yearly", priority: 0.2 },
|
||||
];
|
||||
|
||||
/* Die englische Fassung ist eine Übersetzung, keine eigenständige Seite: gleiche
|
||||
Änderungsfrequenz, aber niedrigere Priorität, damit Deutsch die Originalfassung bleibt.
|
||||
Jeder Eintrag nennt über `alternates.languages` beide Fassungen – dasselbe hreflang,
|
||||
das die Seiten im <head> tragen. */
|
||||
const PRIORITY_FACTOR: Record<Lang, number> = { de: 1, en: 0.9 };
|
||||
|
||||
export default function sitemap(): MetadataRoute.Sitemap {
|
||||
// Evaluated at build time (no request time in a static export): "last modified" = last build.
|
||||
const lastModified = new Date();
|
||||
return LANGS.flatMap((lang) =>
|
||||
pages.map(({ page, changeFrequency, priority }) => ({
|
||||
url: `${site.url}${routesByLang[lang][page]}`,
|
||||
lastModified,
|
||||
changeFrequency,
|
||||
priority: Number((priority * PRIORITY_FACTOR[lang]).toFixed(2)),
|
||||
alternates: {
|
||||
languages: {
|
||||
de: `${site.url}${routesByLang.de[page]}`,
|
||||
en: `${site.url}${routesByLang.en[page]}`,
|
||||
},
|
||||
},
|
||||
})),
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user