diff options
author | 2025-03-21 10:48:15 +0000 | |
---|---|---|
committer | 2025-03-21 10:48:15 +0000 | |
commit | 12cc4d88f216ba3f684ddffb33d117baa7197726 (patch) | |
tree | 854b741f8dd8b1d4d0f840f0df334074cce27865 /packages/integrations/vercel/src | |
parent | 9a0808cf18172f14fd6ddaa77eecf74093767348 (diff) | |
download | astro-12cc4d88f216ba3f684ddffb33d117baa7197726.tar.gz astro-12cc4d88f216ba3f684ddffb33d117baa7197726.tar.zst astro-12cc4d88f216ba3f684ddffb33d117baa7197726.zip |
fix: generate correct external redirects (#13480)
Diffstat (limited to 'packages/integrations/vercel/src')
-rw-r--r-- | packages/integrations/vercel/src/lib/redirects.ts | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/packages/integrations/vercel/src/lib/redirects.ts b/packages/integrations/vercel/src/lib/redirects.ts index 23a4dc11f..612c8e917 100644 --- a/packages/integrations/vercel/src/lib/redirects.ts +++ b/packages/integrations/vercel/src/lib/redirects.ts @@ -1,5 +1,5 @@ import nodePath from 'node:path'; -import { removeLeadingForwardSlash } from '@astrojs/internal-helpers/path'; +import { isRemotePath, removeLeadingForwardSlash } from '@astrojs/internal-helpers/path'; import type { AstroConfig, IntegrationResolvedRoute, RoutePart } from 'astro'; import type { Redirect } from '@vercel/routing-utils'; @@ -92,10 +92,14 @@ function getRedirectLocation(route: IntegrationResolvedRoute, config: AstroConfi return pathJoin(config.base, pattern); } - if (typeof route.redirect === 'object') { - return pathJoin(config.base, route.redirect.destination); + const destination = + typeof route.redirect === 'object' ? route.redirect.destination : (route.redirect ?? ''); + + if (isRemotePath(destination)) { + return destination; } - return pathJoin(config.base, route.redirect || ''); + + return pathJoin(config.base, destination); } function getRedirectStatus(route: IntegrationResolvedRoute): number { |