diff --git a/hdyc-svelte/src/lib/seo.ts b/hdyc-svelte/src/lib/seo.ts
index 262e6bc..bc2c1f3 100644
--- a/hdyc-svelte/src/lib/seo.ts
+++ b/hdyc-svelte/src/lib/seo.ts
@@ -84,6 +84,7 @@ export const calculatorSeo = (calc: CalculatorDef) => {
title,
description,
canonicalUrl: canonical,
+ canonicalSlug,
noindex,
};
};
diff --git a/hdyc-svelte/src/routes/[slug]/+page.server.ts b/hdyc-svelte/src/routes/[slug]/+page.server.ts
index db165de..21ab052 100644
--- a/hdyc-svelte/src/routes/[slug]/+page.server.ts
+++ b/hdyc-svelte/src/routes/[slug]/+page.server.ts
@@ -1,7 +1,7 @@
-import { error } from '@sveltejs/kit';
+import { error, redirect } from '@sveltejs/kit';
import type { PageServerLoad } from './$types';
import { getCalculatorBySlug, getCalculatorsByCategory, categories, getEffectiveCategory } from '$lib/data/calculators';
-import { calculatorJsonLd, calculatorSeo } from '$lib/seo';
+import { calculatorJsonLd, calculatorSeo, toJsonLd } from '$lib/seo';
export const load: PageServerLoad = ({ params, setHeaders }) => {
const calc = getCalculatorBySlug(params.slug);
@@ -13,13 +13,17 @@ export const load: PageServerLoad = ({ params, setHeaders }) => {
}
const effectiveCategory = getEffectiveCategory(calc);
+ const seo = calculatorSeo(calc);
+
+ if (seo.canonicalSlug !== calc.slug) {
+ throw redirect(301, `/${seo.canonicalSlug}`);
+ }
const related = getCalculatorsByCategory(effectiveCategory)
.filter(c => c.slug !== calc.slug)
.slice(0, 8);
const categoryMeta = categories[effectiveCategory];
- const seo = calculatorSeo(calc);
if (seo.noindex) {
setHeaders({
'X-Robots-Tag': 'noindex, follow'
@@ -30,7 +34,7 @@ export const load: PageServerLoad = ({ params, setHeaders }) => {
calculator: calc,
related,
seo,
- jsonLd: JSON.stringify(calculatorJsonLd(calc, seo.canonicalUrl)),
+ jsonLd: toJsonLd(calculatorJsonLd(calc, seo.canonicalUrl)),
category: effectiveCategory,
categoryLabel: categoryMeta?.label ?? calc.category,
categoryIcon: categoryMeta?.icon ?? '🔢'
diff --git a/hdyc-svelte/src/routes/[slug]/+page.svelte b/hdyc-svelte/src/routes/[slug]/+page.svelte
index febf2ea..edb653f 100644
--- a/hdyc-svelte/src/routes/[slug]/+page.svelte
+++ b/hdyc-svelte/src/routes/[slug]/+page.svelte
@@ -68,6 +68,7 @@
+ {@html ``}
{@html ``}
{@html ``}