jalil.arfaoui.net/astro.config.mjs
Jalil Arfaoui a7362730ba Sitemap hreflang corrigé pour URLs traduites et routes dynamiques
Remplace l'option i18n du plugin sitemap (qui supposait des chemins identiques entre langues) par un serialize custom basé sur getAlternateUrls(). Ajoute le support des routes dynamiques (albums photo, blog posts) via des patterns regex, et l'entrée statique /photo/blog. Toutes les pages traduites ont désormais des hreflang fr/en/ar + x-default corrects dans le sitemap et le HTML.
2026-02-23 01:04:02 +01:00

45 lines
1.1 KiB
JavaScript

import { defineConfig } from "astro/config";
import sitemap from "@astrojs/sitemap";
import tailwind from "@astrojs/tailwind";
import { getAlternateUrls } from "./src/utils/page-translations.ts";
// https://astro.build/config
export default defineConfig({
site: "https://jalil.arfaoui.net",
devToolbar: { enabled: false },
integrations: [
tailwind(),
sitemap({
serialize(item) {
const url = new URL(item.url);
const pathname = decodeURIComponent(url.pathname).replace(/\/$/, "") || "/";
const alternates = getAlternateUrls(pathname);
if (alternates) {
const fullUrl = (path) =>
path === "/" ? `${url.origin}/` : `${url.origin}${path}/`;
item.links = [
{ lang: "fr", url: fullUrl(alternates.fr) },
{ lang: "en", url: fullUrl(alternates.en) },
{ lang: "ar", url: fullUrl(alternates.ar) },
{ lang: "x-default", url: fullUrl(alternates.fr) },
];
}
return item;
},
}),
],
redirects: {
"/photos": {
status: 301,
destination: "https://photos.jalil.arfaoui.net"
}
},
i18n: {
defaultLocale: "fr",
locales: ["fr", "en", "ar"],
routing: {
prefixDefaultLocale: false
}
}
});