From eff8b4f1709e92f23b03dd1dba41a60979b373a1 Mon Sep 17 00:00:00 2001 From: Yndira-E Date: Thu, 13 Aug 2026 12:09:52 +0200 Subject: [PATCH 1/2] Remove redirect --- nuxt/redirects.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/nuxt/redirects.ts b/nuxt/redirects.ts index 715dd5e13f..d2b800139d 100644 --- a/nuxt/redirects.ts +++ b/nuxt/redirects.ts @@ -26,7 +26,6 @@ export const redirects: Record = { '/handbook/product/telemetry/': { redirect: { to: '/handbook/engineering/product/telemetry/', statusCode: 301 } }, '/handbook/product/versioning/': { redirect: { to: '/handbook/engineering/product/versioning/', statusCode: 301 } }, '/handbook/development/release/': { redirect: { to: '/handbook/engineering/releases/', statusCode: 301 } }, - '/blog/2023/05/Integrating-Modbus-with-Node-RED': { redirect: { to: '/blog/2023/05/integrating-modbus-with-node-red/', statusCode: 301 } }, '/handbook/development/observability/': { redirect: { to: '/handbook/engineering/ops/observability/', statusCode: 301 } }, '/handbook/development/staging/': { redirect: { to: '/handbook/engineering/ops/staging/', statusCode: 301 } }, '/handbook/development/how-we-work/staging/': { redirect: { to: '/handbook/engineering/ops/staging/', statusCode: 301 } }, @@ -96,7 +95,6 @@ export const redirects: Record = { '/cloud/': { redirect: { to: 'https://app.flowfuse.com/account/create/', statusCode: 301 } }, '/legal/terms/': { redirect: { to: '/terms/', statusCode: 301 } }, '/book-a-demo/': { redirect: { to: '/book-demo/', statusCode: 301 } }, - '/blog/2026/03/Rethinking-Edge-AIs-Core-Orchestration/': { redirect: { to: '/blog/2026/03/rethinking-edge-ais-core-orchestration/', statusCode: 301 } }, '/education/': { redirect: { to: '/node-red/learn/', statusCode: 301 } }, '/handbook/marketing/education/': { redirect: { to: '/handbook/marketing/', statusCode: 301 } }, '/handbook/sales/org/account-executives/': { redirect: { to: '/handbook/sales/sales-team/', statusCode: 301 } }, From bd3cb31477b47cc0bb516a09bca6174e429e53e5 Mon Sep 17 00:00:00 2001 From: Yndira-E Date: Thu, 13 Aug 2026 12:22:40 +0200 Subject: [PATCH 2/2] Add redirects to netlify.toml --- netlify.toml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/netlify.toml b/netlify.toml index 047d34b1fd..63b4e1bd77 100644 --- a/netlify.toml +++ b/netlify.toml @@ -79,6 +79,21 @@ from = "/landing/accelerating-industrial-innovation-with-low-code-platforms/" to = "/whitepaper/accelerating-industrial-innovation-with-low-code-platforms/" status = 301 +# Case-sensitive legacy casing redirects. These can't live in nuxt/redirects.ts: +# Nitro's route rules match case-insensitively, so a rule keyed on the old casing +# also matches the current lowercase canonical URL, redirecting it to itself in +# an infinite loop. Netlify's edge redirects match exact case, so they redirect +# only the old casing without touching the canonical URL. +[[redirects]] +from = "/blog/2023/05/Integrating-Modbus-with-Node-RED" +to = "/blog/2023/05/integrating-modbus-with-node-red/" +status = 301 + +[[redirects]] +from = "/blog/2026/03/Rethinking-Edge-AIs-Core-Orchestration/" +to = "/blog/2026/03/rethinking-edge-ais-core-orchestration/" +status = 301 + [[redirects]] from = "/*" to = "/.netlify/functions/server"