feat(seo): sitemap aligné sur les canoniques des pages (slashes) et hreflang ajouté aux pages dynamiques (articles, blog)
This commit is contained in:
parent
f2f1bd41e1
commit
88adcb1590
3 changed files with 42 additions and 36 deletions
|
|
@ -15,11 +15,11 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/blog/" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/blog/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/en/equipe</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/en/equipe/</loc>
|
||||||
<lastmod>2026-08-14</lastmod>
|
<lastmod>2026-08-14</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/equipe" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/equipe/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/en/fingerprint-test</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/en/fingerprint-test</loc>
|
||||||
|
|
@ -36,11 +36,11 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/privacy-policy" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/privacy-policy" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/en/projets</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/en/projets/</loc>
|
||||||
<lastmod>2026-08-17</lastmod>
|
<lastmod>2026-08-17</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/projets" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/projets/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/en/tos</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/en/tos</loc>
|
||||||
|
|
@ -50,11 +50,11 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/tos" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/tos" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/en/zmap</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/en/zmap/</loc>
|
||||||
<lastmod>2026-08-17</lastmod>
|
<lastmod>2026-08-17</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/en/zmap/archives</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/en/zmap/archives</loc>
|
||||||
|
|
@ -64,10 +64,10 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/archives" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/archives" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/en/zmap/road-speeds</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/en/zmap/road-speeds/</loc>
|
||||||
<lastmod>2026-08-17</lastmod>
|
<lastmod>2026-08-17</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap/road-speeds" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap/road-speeds/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,11 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/blog/" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/blog/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/fr/equipe</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/fr/equipe/</loc>
|
||||||
<lastmod>2026-08-14</lastmod>
|
<lastmod>2026-08-14</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/equipe" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/equipe/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/equipe/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/fr/fingerprint-test</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/fr/fingerprint-test</loc>
|
||||||
|
|
@ -36,11 +36,11 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/privacy-policy" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/privacy-policy" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/fr/projets</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/fr/projets/</loc>
|
||||||
<lastmod>2026-08-17</lastmod>
|
<lastmod>2026-08-17</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/projets" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/projets/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/projets/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/fr/tos</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/fr/tos</loc>
|
||||||
|
|
@ -50,11 +50,11 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/tos" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/tos" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/fr/zmap</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/fr/zmap/</loc>
|
||||||
<lastmod>2026-08-17</lastmod>
|
<lastmod>2026-08-17</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/fr/zmap/archives</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/fr/zmap/archives</loc>
|
||||||
|
|
@ -64,10 +64,10 @@
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/archives" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/archives" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
<url>
|
<url>
|
||||||
<loc>https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route</loc>
|
<loc>https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/</loc>
|
||||||
<lastmod>2026-08-17</lastmod>
|
<lastmod>2026-08-17</lastmod>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route" hreflang="fr" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" hreflang="fr" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap/road-speeds" hreflang="en" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/en/zmap/road-speeds/" hreflang="en" rel="alternate"/>
|
||||||
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route" hreflang="x-default" rel="alternate"/>
|
<xhtml:link href="https://riricdev.tail5ea5cd.ts.net/fr/zmap/vitesses-par-route/" hreflang="x-default" rel="alternate"/>
|
||||||
</url>
|
</url>
|
||||||
</urlset>
|
</urlset>
|
||||||
|
|
|
||||||
|
|
@ -655,6 +655,9 @@ function articlePage(article: Article, lang: "fr" | "en"): string {
|
||||||
<meta name="robots" content="index, follow" />
|
<meta name="robots" content="index, follow" />
|
||||||
<title>${escHtml(v.title)} · Zektyc</title>
|
<title>${escHtml(v.title)} · Zektyc</title>
|
||||||
<link rel="canonical" href="${url}" />
|
<link rel="canonical" href="${url}" />
|
||||||
|
<link rel="alternate" hreflang="fr" href="${frUrl}" />
|
||||||
|
<link rel="alternate" hreflang="en" href="${enUrl}" />
|
||||||
|
<link rel="alternate" hreflang="x-default" href="${frUrl}" />
|
||||||
<meta name="theme-color" content="#070a0f" />
|
<meta name="theme-color" content="#070a0f" />
|
||||||
<meta property="og:type" content="article" />
|
<meta property="og:type" content="article" />
|
||||||
<meta property="og:site_name" content="Zektyc" />
|
<meta property="og:site_name" content="Zektyc" />
|
||||||
|
|
@ -718,6 +721,9 @@ function newsIndex(lang: "fr" | "en"): string {
|
||||||
<meta name="robots" content="index, follow" />
|
<meta name="robots" content="index, follow" />
|
||||||
<title>Blog · Zektyc</title>
|
<title>Blog · Zektyc</title>
|
||||||
<link rel="canonical" href="${SITE_URL}/${lang}/blog/" />
|
<link rel="canonical" href="${SITE_URL}/${lang}/blog/" />
|
||||||
|
<link rel="alternate" hreflang="fr" href="${SITE_URL}/fr/blog/" />
|
||||||
|
<link rel="alternate" hreflang="en" href="${SITE_URL}/en/blog/" />
|
||||||
|
<link rel="alternate" hreflang="x-default" href="${SITE_URL}/fr/blog/" />
|
||||||
<meta name="theme-color" content="#070a0f" />
|
<meta name="theme-color" content="#070a0f" />
|
||||||
<meta property="og:type" content="website" />
|
<meta property="og:type" content="website" />
|
||||||
<meta property="og:site_name" content="Zektyc" />
|
<meta property="og:site_name" content="Zektyc" />
|
||||||
|
|
@ -756,11 +762,11 @@ function writeSitemaps(articles: Article[]) {
|
||||||
{ fr: "/fr/privacy-policy", en: "/en/privacy-policy", lm: "2026-08-14" },
|
{ fr: "/fr/privacy-policy", en: "/en/privacy-policy", lm: "2026-08-14" },
|
||||||
{ fr: "/fr/blog/", en: "/en/blog/", lm: "2026-08-14" },
|
{ fr: "/fr/blog/", en: "/en/blog/", lm: "2026-08-14" },
|
||||||
{ fr: "/fr/fingerprint-test", en: "/en/fingerprint-test", lm: "2026-08-16" },
|
{ fr: "/fr/fingerprint-test", en: "/en/fingerprint-test", lm: "2026-08-16" },
|
||||||
{ fr: "/fr/projets", en: "/en/projets", lm: "2026-08-17" },
|
{ fr: "/fr/projets/", en: "/en/projets/", lm: "2026-08-17" },
|
||||||
{ fr: "/fr/equipe", en: "/en/equipe", lm: "2026-08-14" },
|
{ fr: "/fr/equipe/", en: "/en/equipe/", lm: "2026-08-14" },
|
||||||
{ fr: "/fr/zmap", en: "/en/zmap", lm: "2026-08-17" },
|
{ fr: "/fr/zmap/", en: "/en/zmap/", lm: "2026-08-17" },
|
||||||
{ fr: "/fr/zmap/archives", en: "/en/zmap/archives", lm: "2026-08-17" },
|
{ fr: "/fr/zmap/archives", en: "/en/zmap/archives", lm: "2026-08-17" },
|
||||||
{ fr: "/fr/zmap/vitesses-par-route", en: "/en/zmap/road-speeds", lm: "2026-08-17" },
|
{ fr: "/fr/zmap/vitesses-par-route/", en: "/en/zmap/road-speeds/", lm: "2026-08-17" },
|
||||||
]
|
]
|
||||||
const art = articles.map((a) => ({ fr: `/fr/blog/${a.slug}/`, en: `/en/blog/${a.slug}/`, lm: a.modified || a.published }))
|
const art = articles.map((a) => ({ fr: `/fr/blog/${a.slug}/`, en: `/en/blog/${a.slug}/`, lm: a.modified || a.published }))
|
||||||
const pages = [...base, ...art].sort((x, y) => x.fr.localeCompare(y.fr))
|
const pages = [...base, ...art].sort((x, y) => x.fr.localeCompare(y.fr))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue