From f4852d1687e8665c0199a4f1a111806410a2ba24 Mon Sep 17 00:00:00 2001 From: Jonas Wanke Date: Mon, 14 Oct 2024 19:34:33 +0200 Subject: [PATCH 1/2] Rewrite paths without language to default language --- astro.config.mjs | 1 - src/middleware.ts | 17 +++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/astro.config.mjs b/astro.config.mjs index f9c5a25..f02cee1 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -10,7 +10,6 @@ export default defineConfig({ i18n: { defaultLocale: defaultLang, locales: Object.keys(languages), - routing: "manual", // see: src/middleware.ts }, integrations: [tailwind(), react(), icon()], site: "https://blz-it.de", diff --git a/src/middleware.ts b/src/middleware.ts index 604ad8c..5897297 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -11,17 +11,18 @@ export const onRequest = defineMiddleware(async (ctx, next) => { } const [, lang] = ctx.url.pathname.split("/"); - if (!(lang in languages)) { - return Response.redirect( - new URL(`/${defaultLang}${ctx.url.pathname}`, ctx.url), - 301, - ); - } + const isValidLanguage = lang in languages; - const response = await next(); + const response = await next( + isValidLanguage + ? undefined + : new URL(`/${defaultLang}${ctx.url.pathname}`, ctx.url), + ); if (response.status === 404) { - return next(new URL(`/${lang}/404`, ctx.url)); + return next( + new URL(`/${isValidLanguage ? lang : defaultLang}/404`, ctx.url), + ); } return response; From 250cdaf32ab3fc421cfb754d79c494495a4cc602 Mon Sep 17 00:00:00 2001 From: Jonas Wanke Date: Mon, 14 Oct 2024 19:38:56 +0200 Subject: [PATCH 2/2] Re-add manual routing --- astro.config.mjs | 1 + 1 file changed, 1 insertion(+) diff --git a/astro.config.mjs b/astro.config.mjs index f02cee1..f9c5a25 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -10,6 +10,7 @@ export default defineConfig({ i18n: { defaultLocale: defaultLang, locales: Object.keys(languages), + routing: "manual", // see: src/middleware.ts }, integrations: [tailwind(), react(), icon()], site: "https://blz-it.de",