Redirects
HTTP 3xx redirects, chains, loops, meta refresh, JavaScript redirects, and redirect edge cases.
Fixtures for redirect handling. Every fixture declares its first response and, where following is safe, its final target in the typed registry.
Families:
- Standard HTTP redirects (301, 302, 303, 307, 308): each status pointing at the shared final 200 target page.
- Chains: two-hop, three-hop mixed-status, and five-hop chains, plus chains ending in 404, 410, or robots-disallowed URLs. Intermediate hops are helper routes that never appear in any sitemap.
- Loops: self, two-step, and three-step redirect loops. Risky and direct-entry only — a crawler must detect and abandon them.
- Meta refresh: immediate, delayed, external, looping, and malformed client-side refresh directives served as ordinary 200 pages.
- JavaScript redirects: location assignment, replace semantics, click-gated navigation, and SPA pushState URL mutation. Only rendering crawlers observe the navigation.
- Edge cases: the non-standard HTTP Refresh header, fragments in Location, a PDF redirect target, query-string preservation, and an absolute same-site Location value.
Fixtures in this category
- Redirect 301 Moved Permanently —
redirect-standard-301(safe) - Redirect 302 Found —
redirect-standard-302(safe) - Redirect 303 See Other —
redirect-standard-303(safe) - Redirect 307 Temporary Redirect —
redirect-standard-307(safe) - Redirect 308 Permanent Redirect —
redirect-standard-308(safe) - Redirect target — final 200 —
redirect-target-final-200(safe) - Redirect chain — two hops of 301 —
redirect-chain-two-hop-301(safe) - Redirect chain — three mixed hops —
redirect-chain-three-hop-mixed(safe) - Redirect chain — five hops —
redirect-chain-five-hop(moderate) - Redirect chain — ends in 404 —
redirect-chain-ends-404(safe) - Redirect chain — ends in 410 —
redirect-chain-ends-410(safe) - Redirect chain — robots-disallowed middle hop —
redirect-chain-robots-disallowed-middle(moderate) - Redirect chain — robots-disallowed final URL —
redirect-chain-robots-disallowed-final(moderate) - Meta refresh — immediate —
redirect-meta-immediate(safe) - Meta refresh — delayed 5s —
redirect-meta-delayed-5s(moderate) - JavaScript redirect — window.location.href —
redirect-js-window-location-href(moderate) - JavaScript redirect — window.location.replace —
redirect-js-window-location-replace(moderate) - JavaScript redirect — SPA pushState —
redirect-js-spa-pushstate(moderate) - Redirect edge — HTTP Refresh header —
redirect-edge-http-refresh-header(moderate) - Redirect edge — fragment in Location —
redirect-edge-fragment(safe) - Redirect edge — PDF target —
redirect-edge-pdf-target(moderate) - Redirect target — PDF resource —
redirect-target-pdf(safe) - Redirect edge — query preservation —
redirect-edge-query-preservation(safe) - Redirect edge — absolute same-site URL —
redirect-edge-absolute-url(safe)