diff options
author | 2023-12-11 22:20:22 +0000 | |
---|---|---|
committer | 2023-12-12 03:50:22 +0530 | |
commit | 27f1c968e238e3790081ef9e107bfb4463ea4fe1 (patch) | |
tree | d84ed9b29e5be15e16607ff5b06557d5e594430d | |
parent | 01ee900b8c4372cdabebb3be12d1bce66ba9ee61 (diff) | |
download | astro-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.ts | 4 | ||||
-rw-r--r-- | packages/integrations/vercel/test/redirects.test.js | 10 |
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(); |