demo: branded error pages
a set of matching error experiences. some are served by the site itself (astro / pages functions), some by cloudflare's edge on waf and rate-limit events. all share the same aesthetic so the visitor experience is coherent.
# try them
401 unauthorized
served by a pages function. imagine an authenticated api rejecting a missing token.
403 forbidden
served by a pages function. imagine an authorization check failing.
404 not found
served by astro's built-in 404 slot on any unknown path.
429 too many requests
served by a pages function. static preview of the 429 experience. to see it fire from cloudflare's edge, go hammer /waf-ratelimit.
403 waf block
served by cloudflare's edge on a waf custom rule. same aesthetic, different origin.
why branded errors matter: a generic "1020 access denied"
page is the sales anti-pattern. custom pages let you say what happened, who
to contact, and preserve trust — even during a block. all four codes here
are configurable per zone (custom pages) or per rule (waf custom response
body).