From 0168c62ca16d0958fcb4144b363e1c71bc4c8fca Mon Sep 17 00:00:00 2001 From: Kit Langton Date: Sat, 17 Oct 2026 16:58:54 -0700 Subject: [PATCH] fix(console): redirect /en URLs to the unprefixed English pages (#56593) --- packages/console/app/src/middleware.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/console/app/src/middleware.ts b/packages/console/app/src/middleware.ts index e9fb86548e9..4aa2148f711 100644 --- a/packages/console/app/src/middleware.ts +++ b/packages/console/app/src/middleware.ts @@ -13,6 +13,18 @@ export default createMiddleware({ url.pathname = strip(url.pathname) if (/^\/changelog\/?$/.test(url.pathname)) return new Response(null, { status: 301, headers: { Location: "/changelog" } }) + // English pages live at unprefixed URLs, so /en/... would be a duplicate of every page. + // /data keeps /en because it redirects unprefixed visits by cookie and Accept-Language. + // Collapse leading slashes so /en//example.com can't become a protocol-relative redirect. + if ( + locale === "en" && + (event.request.method === "GET" || event.request.method === "HEAD") && + !/^\/data(\/|$)/.test(url.pathname) + ) + return new Response(null, { + status: 301, + headers: { Location: `${url.pathname.replace(/^\/+/, "/")}${url.search}` }, + }) const request = new Request(url, event.request) request.headers.set(LOCALE_HEADER, locale) event.request = request