URL structure and redirects / HTTP, errors and content availability
Keep the address stable and the response honest.
A URL move and an unavailable answer need different decisions. Keep a useful address when possible; when it changes or disappears, align the response, destination and recovery route with what the reader was promised.

Choose readable addresses with durable meaning.
Use an understandable path tied to the lasting subject or task. Avoid changing a URL merely to insert another keyword or a temporary campaign date. A readable path helps people interpret it, but the page still needs the promised answer. Preserve a working established address when the benefit of changing it does not justify migration work.
Keep an inventory of accepted URLs, page roles, parameters, canonical preferences and incoming routes. Distinguish a duplicate view from a page serving a different task. A sorted listing may be equivalent to its base view; a version-specific procedure may need to remain distinct. Text similarity or shared keywords cannot decide this alone.
Decide if a move has a genuine equivalent.

Map the old page’s full useful task to the proposed destination before configuring a redirect. A relevant replacement should preserve the answer, needed conditions and next action. A generic homepage is not a universal replacement for deleted specialist pages. If no equivalent exists, use a truthful unavailable or historical state with useful onward navigation.
A canonical annotation expresses a preferred representative among duplicate or very similar pages; it does not take the visitor to a different URL. A redirect changes the route. Keep these signals, internal links and sitemap entries consistent with the intended page. Do not use a canonical link as a substitute for a missing answer or an access error.
Match redirect permanence and avoid needless hops.
Use a server-side permanent redirect, commonly 301 or 308, for a genuine permanent move. Use a temporary status, commonly 302 or 307, when the original address is intended to resume its role. Choose the status fitting the behavior, including request-method handling where it matters; do not describe all redirect codes as interchangeable.
Map old addresses directly to the final equivalent destination. Remove loops and avoid stacking a prior redirect on another move. Update owned links, navigation, canonical references and sitemap entries to the destination rather than relying on a chain forever. Keep the old route working for existing bookmarks and external links according to the migration plan.
Worked move: a support explanation changes its path.

This hypothetical example makes no live server changes. A fictional documentation site moves /help/export-notes/ to /docs/export-notes/. The answer and supported product version remain the same. The owner first inventories incoming links, confirms that the new page includes every required step and prepares a recoverable copy of the old page and route settings.
Proposed release: the new URL returns 200 with the complete answer and its intended canonical; the old URL returns a single 301 to it. Existing older aliases should point directly to the new final destination. Navigation, contextual links and sitemap entries use the new URL. Verify encoded characters, case/trailing-slash behavior and relevant query variants rather than applying an unchecked wildcard.
Before release, test the mapping in a safe environment, including unrelated paths that must not move. After release, inspect headers and final content at each mapped URL, confirm no loop or chain, and check a sample of incoming routes. Monitor server errors and discovery observations separately; a redirect response does not prove search processing is complete.
| Move check | Expected evidence | Rollback trigger/action |
|---|---|---|
| Answer equivalence | Old and new support conditions and steps match | Pause if required information is missing; restore accurate answer |
| Old route | One 301 to final new route | Wrong target or loop: restore accepted routing configuration |
| New route | 200, full answer, intended canonical and access | Unavailable/broken new page: restore service or return to accepted route |
| Owned signals | Links and sitemap point to final destination | Repair conflicting signals; do not leave a reverse redirect loop |
| Rollback retest | Old/new statuses, content, canonical, links and caches checked | A configuration restore alone is not a passed rollback |
Interpret the response code and the content together.
A 200 response means successful delivery, not guaranteed indexing or a complete answer. A redirect response such as 301 or 302 supplies a new route; a 304 response serves a different caching purpose. A 404 can represent a missing resource;410 can express that it is gone. A 503 can describe temporary service unavailability. The response should fit the real situation rather than disguise every failure as success.
A page that says “not found” while returning 200 can be treated as a soft error. So can some irrelevant redirect destinations. Inspect the answer and destination rather than only the status number. A page may return 200 yet require an unexpected sign-in, hide its answer behind a broken script or show only an empty shell.
Worked unavailable state: no equivalent replacement exists.
A fictional retired workshop page has no future event and no equivalent successor. Return 404 or 410 according to the resource’s lifecycle and the site’s policy; do not send every visitor to the homepage. Provide a useful HTML response with the event name or requested subject, a plain statement of unavailability, and relevant navigation that really exists.
Suggested visible copy: “This workshop page is no longer available. No replacement workshop is currently listed. Browse the workshop archive for dated past material, or view the current event listing.” In a real site, make those last routes real descriptive links after verifying them. The recovery page can retain navigation and contact support without pretending the old event is still bookable.
If the same resource is temporarily unavailable during maintenance, a 503 response with a truthful temporary notice and a suitable Retry-After header where appropriate is a different plan. Do not permanently redirect a short outage into unrelated content. Neither this teaching example nor a page mockup establishes that a live server emits the correct header.
| Situation | Response decision | Useful recovery |
|---|---|---|
| Permanent removal, no equivalent | 404 or 410 matching lifecycle | Explain absence; offer relevant verified listing/archive routes |
| Permanent equivalent move | 301/308 to equivalent final page | Keep direct route and update owned links |
| Temporary service outage | 503 and accurate temporary notice | State what is unavailable; retry/support route if supported |
| Unexpected error | Investigate response and failure logs | Repair service; do not label an unresolved failure as successful content |
Keep unavailable content from creating contradictory signals.

Remove retired URLs from current sitemaps and update owned links when they no longer serve their promise. Keep historical links deliberately where they still help, with appropriate context. Do not pair an unavailable response with copy claiming a current offer or an indexed canonical owner.
For generated pages, decide the durable task, equivalence, record completeness and lifecycle before applying directives. Empty states and useful enduring filters need different treatment. Restrict uncontrolled generation and discovery of weak variants rather than treating a canonical or noindex tag as a complete architecture plan.
Record recovery ownership and the limits of observation.
Store old and new URL, reason, equivalence evidence, status, redirect target, link changes, configuration version, release owner and rollback conditions. For an unavailable page, keep the cause, expected duration if known, support destination and recheck trigger. Test a response through the normal route after deployment, not only a local template.
A browser view, raw response, server log and Search Console observation answer different questions. Record exactly what each shows and when. A single successful request cannot establish every visitor state, crawler action or future availability. Keep unresolved failures visible and restore the smallest accurate route before expanding the migration.
Sources and related learning
Google navigation and discovery documentation. Google canonical URL documentation. Google crawler HTTP response documentation. Google URL migration documentation. Google crawling and indexing documentation.
The worked scenarios are fictional teaching records. They do not report live tests, client work or measured search outcomes.
Continue with semantic SEO learning and technical access and indexing. Make destination links usable. Keep anchor promises accurate.
