diff options
-rw-r--r-- | .changeset/odd-maps-glow.md | 5 | ||||
-rw-r--r-- | packages/underscore-redirects/src/astro.ts | 18 |
2 files changed, 17 insertions, 6 deletions
diff --git a/.changeset/odd-maps-glow.md b/.changeset/odd-maps-glow.md new file mode 100644 index 000000000..c8df7fa51 --- /dev/null +++ b/.changeset/odd-maps-glow.md @@ -0,0 +1,5 @@ +--- +'@astrojs/underscore-redirects': patch +--- + +Adds the base path as prefix for input paths diff --git a/packages/underscore-redirects/src/astro.ts b/packages/underscore-redirects/src/astro.ts index b378eb955..8d91847e0 100644 --- a/packages/underscore-redirects/src/astro.ts +++ b/packages/underscore-redirects/src/astro.ts @@ -12,7 +12,7 @@ function getRedirectStatus(route: RouteData): ValidRedirectStatus { } interface CreateRedirectsFromAstroRoutesParams { - config: Pick<AstroConfig, 'build' | 'output'>; + config: Pick<AstroConfig, 'build' | 'output' | 'base'>; /** * Maps a `RouteData` to a dynamic target */ @@ -28,6 +28,12 @@ export function createRedirectsFromAstroRoutes({ routeToDynamicTargetMap, dir, }: CreateRedirectsFromAstroRoutesParams) { + const base = + config.base && config.base !== '/' + ? config.base.endsWith('/') + ? config.base.slice(0, -1) + : config.base + : ''; const output = config.output; const _redirects = new Redirects(); @@ -39,7 +45,7 @@ export function createRedirectsFromAstroRoutes({ // from the user if provided. _redirects.add({ dynamic: false, - input: route.pathname, + input: `${base}${route.pathname}`, target: typeof route.redirect === 'object' ? route.redirect.destination : route.redirect, status: getRedirectStatus(route), weight: 2, @@ -53,7 +59,7 @@ export function createRedirectsFromAstroRoutes({ } else if (route.distURL) { _redirects.add({ dynamic: false, - input: route.pathname, + input: `${base}${route.pathname}`, target: prependForwardSlash(route.distURL.toString().replace(dir.toString(), '')), status: 200, weight: 2, @@ -61,7 +67,7 @@ export function createRedirectsFromAstroRoutes({ } else { _redirects.add({ dynamic: false, - input: route.pathname, + input: `${base}${route.pathname}`, target: dynamicTarget, status: 200, weight: 2, @@ -94,7 +100,7 @@ export function createRedirectsFromAstroRoutes({ } _redirects.add({ dynamic: true, - input: pattern, + input: `${base}${route.pattern}`, target, status: route.type === 'redirect' ? 301 : 200, weight: 1, @@ -102,7 +108,7 @@ export function createRedirectsFromAstroRoutes({ } else { _redirects.add({ dynamic: true, - input: pattern, + input: `${base}${route.pattern}`, target: dynamicTarget, status: 200, weight: 1, |