Skip to content

Commit

Permalink
Fix redirect in SSR (Node and dynamic) (#7856)
Browse files Browse the repository at this point in the history
  • Loading branch information
matthewp committed Jul 28, 2023
1 parent 98ca04f commit 861f10e
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 2 deletions.
5 changes: 5 additions & 0 deletions .changeset/green-berries-flow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Properly serialize redirect config for SSR
3 changes: 2 additions & 1 deletion packages/astro/src/@types/astro.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'];
};
Expand Down
3 changes: 3 additions & 0 deletions packages/astro/src/core/routing/manifest/serialization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ export function serializeRouteData(
...routeData,
generate: undefined,
pattern: routeData.pattern.source,
redirectRoute: routeData.redirectRoute ? serializeRouteData(routeData.redirectRoute, trailingSlash) : undefined,
_meta: { trailingSlash },
};
}
Expand All @@ -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,
};
}
2 changes: 1 addition & 1 deletion packages/astro/test/redirects.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 () => {
Expand Down

0 comments on commit 861f10e

Please sign in to comment.