From b2575f8048898c50388628491b2d925f6394f644 Mon Sep 17 00:00:00 2001 From: Tee Ming Date: Mon, 30 Jan 2023 17:39:37 +0800 Subject: [PATCH] fix: add prerendered redirect for non-trailing slash routes with the Vercel adapter (#8766) fixes #8755 Adds a redirect for prerendered non-trailing slash routes to adapter-vercel. Previously, only prerendered trailing slash routes would be added to the redirects list in the vercel config file. --- .changeset/purple-starfishes-sip.md | 5 +++++ packages/adapter-vercel/index.js | 22 +++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 .changeset/purple-starfishes-sip.md diff --git a/.changeset/purple-starfishes-sip.md b/.changeset/purple-starfishes-sip.md new file mode 100644 index 000000000000..1b10ffc07011 --- /dev/null +++ b/.changeset/purple-starfishes-sip.md @@ -0,0 +1,5 @@ +--- +'@sveltejs/adapter-vercel': patch +--- + +fix: add trailing slash -> no trailing slash redirect for prerendered pages diff --git a/packages/adapter-vercel/index.js b/packages/adapter-vercel/index.js index 529225d7cf28..47d384ee3feb 100644 --- a/packages/adapter-vercel/index.js +++ b/packages/adapter-vercel/index.js @@ -193,16 +193,24 @@ function static_vercel_config(builder) { } for (const [path, page] of builder.prerendered.pages) { - if (path.endsWith('/') && path !== '/') { + let overrides_path = path.slice(1); + + if (path !== '/') { + /** @type {string | undefined} */ + let counterpart_route = path + '/'; + + if (path.endsWith('/')) { + counterpart_route = path.slice(0, -1); + overrides_path = path.slice(1, -1); + } + prerendered_redirects.push( - { src: path, dest: path.slice(0, -1) }, - { src: path.slice(0, -1), status: 308, headers: { Location: path } } + { src: path, dest: counterpart_route }, + { src: counterpart_route, status: 308, headers: { Location: path } } ); - - overrides[page.file] = { path: path.slice(1, -1) }; - } else { - overrides[page.file] = { path: path.slice(1) }; } + + overrides[page.file] = { path: overrides_path }; } return {