summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/odd-maps-glow.md5
-rw-r--r--packages/underscore-redirects/src/astro.ts18
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,