Validate against an approved destination contract

Redirect validation starts with an approved mapping, not a crawler’s list of final successful responses. For every source URL, record the intended destination, reason, expected redirect type and any deliberate exception. A successful arrival at the wrong page is still a failed mapping. Content relevance requires review as well as transport checks.

Separate permanent moves, temporary journeys and genuine removals. Google recommends permanent server-side redirects for permanent URL changes, with 301 and 308 serving that purpose. A temporarily unavailable service may need different behaviour. Do not convert all redirects to permanent merely to make a report uniform, and do not invent replacement content for pages with no relevant successor.

The redirect mapping guide explains how to establish intent. The automated validator should test that agreed intent precisely, including old host and protocol variants where they remain relevant. Preserve original source addresses so a convenient normalisation rule cannot remove the very legacy routes that need to be tested after a migration.

Record every hop rather than only the final status

Disable blind redirect following in the observation layer, or use a client that exposes complete hop history. Save the requested URL, response code, raw Location value, resolved destination and request time at every step. A final 200 does not reveal whether the journey involved an unnecessary chain, a temporary redirect or an unexpected external host.

Resolve relative Location references against the response URL with a proper URL parser. Simple concatenation fails for parent-relative and root-relative values. Preserve both raw and resolved values so a developer can reproduce an incorrect route. Enforce allowed schemes and hosts at each hop rather than trusting only the original input inventory.

Track visited URLs and cap hop count, total duration and response size. Report loops and exceeded limits explicitly. A maximum-hop failure is not the same as a known missing destination. Use redirect chain analysis to distinguish route simplification opportunities from journeys that cannot complete. The local acceptance threshold should be stated as a site policy, not invented as a universal search-engine rule.

Use request methods and environments deliberately

Use GET requests when validating the public retrieval journey and destination content. HEAD can reduce transfer costs for selected preliminary checks, but it cannot provide the body needed to confirm content identity. If an infrastructure layer handles HEAD differently, verify with GET before assigning a user-facing defect. Record the method used in the evidence.

Keep cookies, language headers, user agent and authentication state controlled. Geolocation and session logic can send an otherwise identical source to different destinations. Decide which user journeys are in scope and test representative variants deliberately. Do not use an authenticated browser’s successful result to dismiss an unauthenticated collector’s evidence without comparing the request conditions.

Preserve query strings according to the approved mapping policy. Some parameters define content or language, while others are unnecessary tracking values. A blanket instruction to retain everything can leak irrelevant state; removing everything can break the intended destination. Test encoded characters, trailing slashes and host variants using explicit fixtures. Avoid fetching destinations outside the approved scope, including private addresses reached through unexpected redirects.

Validate the final content and related signals

Check more than the terminal status. Confirm the final URL matches the approved destination under documented comparison rules, that the page presents the intended content and that public destination directives meet its publishing policy. A generic error page returning 200 should fail the content check even though the transport completed successfully.

Review canonical declarations and internal references where they affect the migration. A mapped destination that declares an unrelated canonical deserves investigation. Update internal links to preferred destinations instead of treating redirects as a permanent substitute for maintaining navigation. Keep XML sitemap expectations consistent with the intended current public URLs.

Do not automatically fail every terminal 404 in a broader retired-URL inventory. Some removed content has no suitable replacement and should be classified by its approved removal policy. For mapped content, however, the validator must enforce the agreed successful destination. The migration checklist places redirect checks alongside content, discovery and monitoring work so a transport pass does not obscure missing or mismatched content.

Evidence checklist and competing hypotheses

The evidence checklist contains the mapping version, source URL, intended target, expected response type, complete hop sequence, request settings, final status, content verification and applicable exceptions. Save timestamps and deployment identifiers. Retain failed requests separately from observed redirect responses so a rate-limited collector cannot manufacture an apparent redirect incident.

For a wrong destination, test an outdated approved map, a route-precedence collision and a query-string rule before proposing a server change. Compare the exact request with a control that matches the same pattern. For a loop, examine the interaction between application routing, edge normalisation and host or HTTPS enforcement rather than assuming one rule is responsible.

For inconsistent results, inspect cache age and request environment. One edge may retain a previous permanent response while another serves a new rule. Repeat a bounded set under controlled conditions and preserve the differing evidence. A validator should make these alternatives visible, allowing an engineer to identify the responsible layer rather than receiving only a spreadsheet cell labelled bad redirect.

Illustrative worked example: find a locale mapping collision

Illustrative worked example: a fictional software publisher moves 300 help articles to new language folders. The approved map preserves each article’s language and topic. These invented quantities demonstrate validation logic, not a real migration result. A validator begins with exact legacy sources and expected destinations rather than generating targets from a broad path replacement.

Suppose 18 French sources reach English equivalents because a general routing rule runs before a language-specific rule. All terminal pages return 200, so a status-only check would miss the defect. The competing hypotheses are an incorrect translation map, rule precedence and a session language preference. Controlled unauthenticated requests and the approved content inventory distinguish them.

After rule precedence is corrected, acceptance requires the 18 French sources to reach their approved French destinations using the agreed permanent response. English controls and unmapped removals must retain their intended behaviour. Update internal links where required and recheck the complete affected pattern. Search reporting remains a separate follow-up; successful mappings do not guarantee a particular ranking, indexing timetable or retention of historical traffic.

Define implementation acceptance criteria and run coverage

Set explicit requirements for mapped journeys: correct permanent or temporary response, approved destination, no loop, an agreed maximum journey length and expected terminal content. Prefer a direct move to the final target where feasible. If an intermediate host transition is temporarily accepted, record the reason and owner rather than silently lowering the standard for every source.

Require complete coverage of the approved map and relevant variants before declaring the run accepted. Show passed, failed, unknown and intentionally excluded totals against the input population. Include malformed mappings, duplicate sources with conflicting targets and missing targets as data-contract failures that prevent the validator from starting a misleading production test.

Keep staging and production evidence separate. A staging host replacement can be useful for rule testing but does not prove that production edge behaviour matches. Verify the public journey after deployment. The migration monitoring guide explains follow-up evidence. Record technical acceptance immediately when demonstrated, while treating later search signals as observations influenced by additional factors and processing delays.

Rollback risks, caching and limits of automation

Keep the previous routing configuration and approved map with a clear release identifier. Test a bounded rollback before broad deployment. Rolling back an application without its edge rules can create a loop; restoring a route without its destination content can produce a valid-looking redirect to an unavailable page. Coordinate these dependencies explicitly.

Permanent responses may be cached, so a server correction does not necessarily erase every client’s previous journey immediately. Record cache behaviour and verify fresh requests at relevant layers. Avoid claiming an instantaneous universal reversal. During a migration, Google advises keeping redirects for as long as possible, generally at least a year; consider user access needs when deciding their longer-term retention.

Automation can detect transport and declared mapping failures reliably when intent is established. It cannot fully judge content equivalence from status codes or guarantee that search engines adopt a preferred destination. Preserve manual review for ambiguous replacements. Feed repeatable journey checks into release QA, and revisit them when new host, language or routing rules could interact with existing legacy paths.

Frequently asked questions

Is a final 200 response enough to pass a redirect?

No. Validate the complete journey, approved destination and intended content. A wrong-language page, unrelated homepage or soft error can return 200. Preserve the initial status and all hops so a successful terminal response does not hide a loop risk, unsuitable redirect type or unnecessary intermediate route.

Should redirects always be tested with HEAD?

HEAD can support lightweight preliminary checks but does not retrieve the body needed to confirm destination content. Use controlled GET observations for the public journey and investigate method differences before reporting a defect. Keep the method visible in results so analysts can reproduce the same conditions.

Can every removed URL be redirected to the homepage?

A generic destination is not a substitute for an appropriate replacement. Establish relevance in the approved map, and retain a genuine removal policy for content with no suitable successor. Automated status checks cannot decide that unrelated pages satisfy the original user intent simply because the homepage is available.

How long should migration redirects remain active?

Google’s site-move guidance recommends retaining redirects for as long as possible, generally at least one year. User bookmarks and external links may justify keeping them longer. Monitor actual journeys and maintain internal links to current destinations. Removing redirects should be a reviewed routing change with an assessed user consequence.

Technical references