diff options
author | 2023-08-18 12:27:44 -0300 | |
---|---|---|
committer | 2023-08-18 10:27:44 -0500 | |
commit | 97c8760d78ffd172149f7776442725861576fba7 (patch) | |
tree | 6382a3d8d172e588a25a5ea9068af8c706196877 | |
parent | 8c0a4ed106efeda286f0aae8b959008f9462b5ec (diff) | |
download | astro-97c8760d78ffd172149f7776442725861576fba7.tar.gz astro-97c8760d78ffd172149f7776442725861576fba7.tar.zst astro-97c8760d78ffd172149f7776442725861576fba7.zip |
Fix 404 response leading to an infinite loop when there is no 404 page (#8136)
* fix: 404 response leads to infinite loop
* chore: changeset
---------
Co-authored-by: Nate Moore <natemoo-re@users.noreply.github.com>
Diffstat (limited to '')
-rw-r--r-- | .changeset/lemon-comics-jump.md | 5 | ||||
-rw-r--r-- | packages/astro/src/vite-plugin-astro-server/route.ts | 6 |
2 files changed, 10 insertions, 1 deletions
diff --git a/.changeset/lemon-comics-jump.md b/.changeset/lemon-comics-jump.md new file mode 100644 index 000000000..f2c9255f3 --- /dev/null +++ b/.changeset/lemon-comics-jump.md @@ -0,0 +1,5 @@ +--- +'astro': patch +--- + +Fix 404 response leading to an infinite loop when there is no 404 page. diff --git a/packages/astro/src/vite-plugin-astro-server/route.ts b/packages/astro/src/vite-plugin-astro-server/route.ts index f58d248a3..f387d07a4 100644 --- a/packages/astro/src/vite-plugin-astro-server/route.ts +++ b/packages/astro/src/vite-plugin-astro-server/route.ts @@ -259,7 +259,7 @@ export async function handleRoute({ await writeWebResponse(incomingResponse, response); } } else { - if (result.status === 404) { + if (result.status === 404 && has404Route(manifestData)) { const fourOhFourRoute = await matchRoute('/404', env, manifestData); return handleRoute({ ...options, @@ -380,3 +380,7 @@ function getStatus(matchedRoute?: MatchedRoute): 404 | 500 | undefined { if (matchedRoute.route.route === '/404') return 404; if (matchedRoute.route.route === '/500') return 500; } + +function has404Route(manifest: ManifestData): RouteData | undefined { + return manifest.routes.find((route) => route.route === '/404') +} |