Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions netlify.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,16 @@
to = "/.netlify/functions/qa-status"
status = 200

# QA-only: expose the qa-301 function at the clean path /qa-301. Same
# rewrite-proxy mechanism as /qa-status above (status = 200 is the
# rewrite TYPE, not a forced response code) — it preserves the
# function's actual 301 status code AND its Location header. Must
# remain BEFORE the SPA catch-all below.
[[redirects]]
from = "/qa-301"
to = "/.netlify/functions/qa-301"
status = 200

# Redirect all requests to /index.html for SPA routing
[[redirects]]
from = "/*"
Expand Down
17 changes: 17 additions & 0 deletions netlify/functions/qa-301.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
// QA-only Netlify Function that always returns a real HTTP 301 redirect
// to the site homepage. Used to test Prerender's handling of 3xx
// responses on a clean, page-looking URL. Reached publicly via /qa-301
// (see redirect in netlify.toml).
//
// The 301 status code and Location header are set by THIS function and
// passed through unchanged by Netlify's status=200 rewrite proxy — the
// client sees the 301 + Location, Netlify does not auto-follow it.

export default async (_req: Request): Promise<Response> => {
return new Response(null, {
status: 301,
headers: {
Location: "https://weirdanimals.life/",
},
});
};
Loading