summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Arsh <69170106+lilnasy@users.noreply.github.com> 2023-12-11 22:20:22 +0000
committerGravatar GitHub <noreply@github.com> 2023-12-12 03:50:22 +0530
commit27f1c968e238e3790081ef9e107bfb4463ea4fe1 (patch)
treed84ed9b29e5be15e16607ff5b06557d5e594430d
parent01ee900b8c4372cdabebb3be12d1bce66ba9ee61 (diff)
downloadastro-27f1c968e238e3790081ef9e107bfb4463ea4fe1.tar.gz
astro-27f1c968e238e3790081ef9e107bfb4463ea4fe1.tar.zst
astro-27f1c968e238e3790081ef9e107bfb4463ea4fe1.zip
fix(vercel): handle dots in source path for redirects (#9289)
* add fix * add test * add changeset
-rw-r--r--packages/integrations/vercel/src/lib/redirects.ts4
-rw-r--r--packages/integrations/vercel/test/redirects.test.js10
2 files changed, 12 insertions, 2 deletions
diff --git a/packages/integrations/vercel/src/lib/redirects.ts b/packages/integrations/vercel/src/lib/redirects.ts
index 35aec2d4f..46c97d349 100644
--- a/packages/integrations/vercel/src/lib/redirects.ts
+++ b/packages/integrations/vercel/src/lib/redirects.ts
@@ -32,11 +32,11 @@ function getMatchPattern(segments: RoutePart[][]) {
.replace(/#/g, '%23')
.replace(/%5B/g, '[')
.replace(/%5D/g, ']')
- .replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
+ .replace(/[*+?^${}()|[\]\\]/g, '\\$&');
})
.join('');
})
- .join('');
+ .join('/');
}
function getReplacePattern(segments: RoutePart[][]) {
diff --git a/packages/integrations/vercel/test/redirects.test.js b/packages/integrations/vercel/test/redirects.test.js
index 9b6a9d50d..795529ece 100644
--- a/packages/integrations/vercel/test/redirects.test.js
+++ b/packages/integrations/vercel/test/redirects.test.js
@@ -16,6 +16,7 @@ describe('Redirects', () => {
destination: '/',
},
'/blog/[...slug]': '/team/articles/[...slug]',
+ '/Basic/http-2-0.html': '/posts/http2',
},
trailingSlash: 'always',
});
@@ -45,6 +46,15 @@ describe('Redirects', () => {
expect(threeRoute.status).to.equal(302);
});
+ it('define redirects for static files', async () => {
+ const config = await getConfig();
+
+ const staticRoute = config.routes.find((r) => r.src === '/Basic/http-2-0.html');
+ expect(staticRoute).to.not.be.undefined;
+ expect(staticRoute.headers.Location).to.equal('/posts/http2');
+ expect(staticRoute.status).to.equal(301);
+ });
+
it('defines dynamic routes', async () => {
const config = await getConfig();