summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/green-berries-flow.md5
-rw-r--r--packages/astro/src/@types/astro.ts3
-rw-r--r--packages/astro/src/core/routing/manifest/serialization.ts3
-rw-r--r--packages/astro/test/redirects.test.js2
4 files changed, 11 insertions, 2 deletions
diff --git a/.changeset/green-berries-flow.md b/.changeset/green-berries-flow.md
new file mode 100644
index 000000000..38e894b5a
--- /dev/null
+++ b/.changeset/green-berries-flow.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Properly serialize redirect config for SSR
diff --git a/packages/astro/src/@types/astro.ts b/packages/astro/src/@types/astro.ts
index fb34954ac..e30ee3b9e 100644
--- a/packages/astro/src/@types/astro.ts
+++ b/packages/astro/src/@types/astro.ts
@@ -1962,9 +1962,10 @@ export type RedirectRouteData = RouteData & {
redirect: string;
};
-export type SerializedRouteData = Omit<RouteData, 'generate' | 'pattern'> & {
+export type SerializedRouteData = Omit<RouteData, 'generate' | 'pattern' | 'redirectRoute'> & {
generate: undefined;
pattern: string;
+ redirectRoute: SerializedRouteData | undefined;
_meta: {
trailingSlash: AstroConfig['trailingSlash'];
};
diff --git a/packages/astro/src/core/routing/manifest/serialization.ts b/packages/astro/src/core/routing/manifest/serialization.ts
index f27477eca..ddbe5eca3 100644
--- a/packages/astro/src/core/routing/manifest/serialization.ts
+++ b/packages/astro/src/core/routing/manifest/serialization.ts
@@ -10,6 +10,7 @@ export function serializeRouteData(
...routeData,
generate: undefined,
pattern: routeData.pattern.source,
+ redirectRoute: routeData.redirectRoute ? serializeRouteData(routeData.redirectRoute, trailingSlash) : undefined,
_meta: { trailingSlash },
};
}
@@ -25,5 +26,7 @@ export function deserializeRouteData(rawRouteData: SerializedRouteData): RouteDa
pathname: rawRouteData.pathname || undefined,
segments: rawRouteData.segments,
prerender: rawRouteData.prerender,
+ redirect: rawRouteData.redirect,
+ redirectRoute: rawRouteData.redirectRoute ? deserializeRouteData(rawRouteData.redirectRoute) : undefined,
};
}
diff --git a/packages/astro/test/redirects.test.js b/packages/astro/test/redirects.test.js
index ecb13993a..17c1070dc 100644
--- a/packages/astro/test/redirects.test.js
+++ b/packages/astro/test/redirects.test.js
@@ -47,7 +47,7 @@ describe('Astro.redirect', () => {
const request = new Request('http://example.com/api/redirect');
const response = await app.render(request);
expect(response.status).to.equal(301);
- expect(response.headers.get('Location')).to.equal('/');
+ expect(response.headers.get('Location')).to.equal('/test');
});
it('Uses 308 for non-GET methods', async () => {