summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Emanuele Stoppa <my.burning@gmail.com> 2024-01-10 13:47:07 +0000
committerGravatar GitHub <noreply@github.com> 2024-01-10 13:47:07 +0000
commita4f90d95ff97abe59f2a1ef0956cab257ae36838 (patch)
treed4bd438cddde34331df2b2e84469531268768fb6
parenta1b56ee1faae76d80d5603e39258bf2a421064b5 (diff)
downloadastro-a4f90d95ff97abe59f2a1ef0956cab257ae36838.tar.gz
astro-a4f90d95ff97abe59f2a1ef0956cab257ae36838.tar.zst
astro-a4f90d95ff97abe59f2a1ef0956cab257ae36838.zip
fix(redirects): correctly compute the status code in redirects (#9657)
-rw-r--r--.changeset/honest-seas-raise.md5
-rw-r--r--packages/astro/src/core/redirects/helpers.ts4
-rw-r--r--packages/astro/src/core/routing/manifest/create.ts8
3 files changed, 14 insertions, 3 deletions
diff --git a/.changeset/honest-seas-raise.md b/.changeset/honest-seas-raise.md
new file mode 100644
index 000000000..4d9725290
--- /dev/null
+++ b/.changeset/honest-seas-raise.md
@@ -0,0 +1,5 @@
+---
+"astro": patch
+---
+
+Fixes a bug where the custom status code wasn't correctly computed in the dev server
diff --git a/packages/astro/src/core/redirects/helpers.ts b/packages/astro/src/core/redirects/helpers.ts
index 1faab7c4e..e171aebe6 100644
--- a/packages/astro/src/core/redirects/helpers.ts
+++ b/packages/astro/src/core/redirects/helpers.ts
@@ -36,8 +36,8 @@ export function redirectRouteGenerate(redirectRoute: RouteData, data: Params): s
export function redirectRouteStatus(redirectRoute: RouteData, method = 'GET'): ValidRedirectStatus {
const routeData = redirectRoute.redirectRoute;
- if (typeof routeData?.redirect === 'object') {
- return routeData.redirect.status;
+ if (routeData && typeof redirectRoute.redirect === 'object') {
+ return redirectRoute.redirect.status;
} else if (method !== 'GET') {
return 308;
}
diff --git a/packages/astro/src/core/routing/manifest/create.ts b/packages/astro/src/core/routing/manifest/create.ts
index 247a01ad1..fcb31c1cc 100644
--- a/packages/astro/src/core/routing/manifest/create.ts
+++ b/packages/astro/src/core/routing/manifest/create.ts
@@ -477,7 +477,13 @@ export function createRouteManifest(
pathname: pathname || void 0,
prerender: false,
redirect: to,
- redirectRoute: routes.find((r) => r.route === to),
+ redirectRoute: routes.find((r) => {
+ if (typeof to === 'object') {
+ return r.route === to.destination;
+ } else {
+ return r.route === to;
+ }
+ }),
fallbackRoutes: [],
};