summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar André Alves <71379045+andremralves@users.noreply.github.com> 2023-08-18 12:27:44 -0300
committerGravatar GitHub <noreply@github.com> 2023-08-18 10:27:44 -0500
commit97c8760d78ffd172149f7776442725861576fba7 (patch)
tree6382a3d8d172e588a25a5ea9068af8c706196877
parent8c0a4ed106efeda286f0aae8b959008f9462b5ec (diff)
downloadastro-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.md5
-rw-r--r--packages/astro/src/vite-plugin-astro-server/route.ts6
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')
+}