Opening the page…

Sulayman Bowles

Executable gates for SEO migrations.

Make every old URL’s outcome testable before moving the site.

· · Updated

Monochrome generative point study “Lorenz Fan,” a mathematical form rendered in black and white.
Lorenz Fan · @yuruyurau ↗

A new site can look finished while old links lead nowhere. Users, crawlers, analytics, caches, and indexes still address the previous system. Visual review cannot prove that redirects preserve intent, retired routes left navigation, canonicals agree with sitemaps, or rendered content survived.

Inventory meaningful old URLs and give each an approved outcome. Generate routing and metadata from that map, validate the build, capture the real production responses, and monitor traffic alongside coverage gaps. Critical route classes must converge before release; accepted exceptions need owners and expiry.

In this article

What should I verify before changing article URLs?

Inventory the meaningful old URLs and approve a specific outcome for each: retained content, an equivalent destination, or deliberate removal. Test redirects, final status, canonical URLs, indexability, internal links, and sitemap membership together. A successful build cannot establish that production serves those outcomes. Keep a launch baseline and repeat the checks against live responses so a routing defect can be distinguished from a later indexing transition or a change in search demand.

Sources: Google site-move guidance · Google redirect guidance · Google canonical guidance

Scope and assumptions

Passing migration gates proves the tested publisher-controlled routing and page signals. It cannot guarantee unchanged rankings, traffic, crawling cadence, index consolidation, or behavior in untested caches, regions, clients, and external systems.

Source of truth
URL MANIFEST
Redirect policy
ONE HOP
Launch gate
FAIL CLOSED
Primary artifact
EVIDENCE LEDGER

Build an attributed URL inventory

Merge sitemaps, crawls, logs, analytics landings, Search Console exports, backlinks, CMS or database routes, feeds, campaigns, and known files. Each misses something. Preserve the source and latest meaningful activity for every URL so omissions remain visible.

Assign keep, equivalent move, reviewed merge, terminal not-found or gone, temporary retention with sunset, or non-public/invalid exclusion. Redirecting everything to home is not a mapping; it leaves product decisions unresolved and sends users to poor destinations.

Record content type, locale, template, indexability, canonical, redirect status, priority, owner, validation contract, and exception rationale. Prevent multiple outcomes for one old URL and accidental ownership of one route by several new pages. Review changes because this manifest drives public behavior.

For an illustrative /guides/audit-to-/research/audit move, the mapping is not complete when the new page builds. The old path must reach that exact new article, old downloads must still reach their intended files, and links within the new page must use the new identities. Keep these as separate rows when their response contracts differ; a wildcard redirect can silently send a PDF request to an HTML page.

Migration URL-manifest fields
FieldPurposeGate
old_urlKnown pre-migration identityUnique and source-attributed
dispositionKeep, move, merge, remove, temporary, excludeAllowed enum with rationale
new_urlApproved destination when applicableCanonical route exists
response_contractExpected status and hop behaviorMatches production
page_contractRequired title, content, directives, schemaBuilt and rendered checks pass
owner_and_expiryAccountability for exceptionNo unowned permanent exception

Compile and test the route contracts

Generate routes, redirects, canonicals, sitemaps, links, and where possible analytics mappings from the manifest. Reject route collisions, redirect cycles, relative canonicals, staging hosts, malformed URLs, noindex sitemap entries, and links still targeting retired routes.

Build and parse priority templates. Check main heading, canonical, directives, meaningful visible content, status behavior, schema agreement, and navigation. Compare the delivered HTML with a pinned browser render using page-specific completion conditions. Screenshots supplement these checks; they do not establish routing.

Treat removal of staging restrictions as an explicit transition. A source build may be indexable while the public CDN still injects X-Robots-Tag: noindex, or a previously blocked crawler may be unable to fetch the new directive. Check both the delivered headers and document and the deployed robots file. Passing one layer does not clear the others.

Check critical and high-traffic URLs completely. Stratify long-tail coverage by template, locale, disposition, depth, query behavior, and source. Retain the full manifest denominator and explicitly report untested rows.

  • Fail on unmapped priority URLs and duplicate old-route ownership.
  • Fail on redirect loops, chains beyond policy, and destinations that do not exist.
  • Fail on staging, preview, localhost, or alternate-host canonicals.
  • Fail on canonical sitemap rows that redirect, noindex, or canonicalize elsewhere.
  • Fail when required visible content or structured data disappears from a template.
  • Report untested manifest rows as coverage gaps.

Resolve every move to its approved destination

For lasting moves, permanent server redirects are the clearest option; Google documents 301 and 308 as permanent signals. Select by method semantics and platform support, testing actual methods when non-GET requests matter. Redirect codes do not all transform requests identically.

Resolve the map before deployment, aiming for one hop from each moved URL to its exact approved destination. Fold historical aliases into the new mapping instead of chaining through old routes. Reject cycles, competing destinations, and targets that redirect again.

When no equivalent exists, 404 or 410 can express removal more honestly than a blanket category or homepage redirect. Product owners decide equivalence; string similarity may suggest candidates but must not silently merge user intent.

Old route Historical alias
One permanent hopApproved canonical

Eligible response · equivalent user purpose

Without an equivalent404 / 410Removal, rather than an irrelevant redirect.
Point historical aliases directly to the approved destination.
Redirect-graph validation
CheckExpected resultFailure risk
old to newOne permanent hop to approved equivalentSlow convergence and fragile chains
historical aliasesPoint directly to current canonicalLayered migrations accumulate
target statusEligible final responseRedirect ends at error, noindex, or another redirect
target contentMatches intended user purposeSoft, misleading, or irrelevant destination
cycle analysisNo strongly connected redirect componentInfinite or failed navigation
method behaviorDocumented for non-GET routesUnexpected request transformation

Record the release and the pre-launch baseline

Freeze the manifest and record application, edge, redirect, sitemap, and analytics versions. Capture old responses, priority templates, internal graph, sitemap counts, and relevant traffic before launch. This baseline separates expected movement from breakage; it does not promise stable metrics.

Coordinate routing and pages so old URLs never lose their intended outcome. Purge or version caches deliberately. Fetch public-host smoke routes from outside the origin network to exercise CDN rules, platform redirects, TLS, host normalization, and middleware.

Where supported, limit canary routes or traffic in a way meaningful for public URLs and crawlers. Define rollback triggers for 5xx spikes, loops, content loss, canonical-host corruption, analytics loss, and critical transaction failures. Restore a coherent route set, not just the frontend.

Redirect checks

Run against a reviewed manifest sample and save headers and bodies as launch evidence.

curl -sS -D old.headers -o /dev/null https://old.example.com/priority-page
curl -sS -L --max-redirs 5 -D chain.headers \
  -o final.html https://old.example.com/priority-page

rg -o '<link[^>]+rel="canonical"[^>]+>' final.html
rg -o '<meta[^>]+name="robots"[^>]+>' final.html

Separate implementation defects from index transition

Monitor old and new route responses, redirects, 404 and 410 volume, server errors, latency, canonical conflicts, sitemap fetches, retired-link references, render failures, analytics continuity, and conversion paths. These implementation signals have short feedback loops.

Crawler requests, indexed examples, submitted versus discovered sitemap states, selected canonicals, impressions, clicks, and landing-page shifts follow external timelines. Google notes moves take time and crawl frequency varies. Report dates and denominators; traffic movement alone does not establish a routing defect.

Link incidents to manifest rows, production captures, owners, decisions, repairs, and validating reruns. Google’s current migration guidance generally recommends retaining redirects for at least 1 year and considering longer retention for users. That is a review floor, not an automatic deletion date: old links and files may still be in use. Save the policy, observed old-route demand and owner decision before retiring the map. Site-move guidance.

Checks after launch and when to interpret them
CheckExamplesDecision horizonWhat it can show
routing healthstatus, hop, loop, targetminutes to hoursPublic edge behavior
page integritycanonical, directives, content, schemaminutes to daysTested templates and routes
discoverysitemap fetches and crawler logsdays to weeksObserved requests only
external indexreported indexed and selected URLsdays to longerProvider-reported samples and states
search demandimpressions, clicks, landing pagesweeks with seasonality contextObserved performance, not sole causal proof
business pathanalytics and conversion eventsimmediate and ongoingMeasured implementation path

Gate routing before declaring the move complete

Require approved outcomes for important old URLs and passing page contracts for new routes through the public edge. Then monitor index consolidation, crawling, and performance separately; passing publisher-controlled checks cannot guarantee their timing or results.

Sources

  1. Google Search: site moves and URL migrations

    Verified Jul 19, 2026

  2. Google Search: redirects and canonical signals

    Verified Jul 19, 2026

  3. Google Search: canonical URL consolidation

    Verified Jul 19, 2026

  4. Google Search: build and submit a sitemap

    Verified Jul 19, 2026

  5. Google Crawling Infrastructure: HTTP status codes

    Verified Jul 19, 2026

  6. RFC 9110: HTTP Semantics

    Verified Jul 19, 2026

Read next