Use a staged 301‑redirect migration combined with Google Search Console change‑of‑address and pre‑crawl testing to preserve rankings.
1. Audit current assets – Export all URLs with Screaming Frog CLI (screamingfrog --crawl https://old.com --export-tabs=internal) and verify indexed count via GSC API (searchanalytics.query).
2. Map URL changes – Create a spreadsheet with old_url → new_url. For restructures, keep the path depth ≤3 and retain target keywords.
3. Set up staging domain – Mirror the site on a sub‑domain (e.g., staging.new.com) and run a full crawl (curl -I https://staging.new.com/page) to confirm HTTP status codes.
4. Implement 301 redirects – Use server‑level redirects (NGINX example below) for every mapping.
location = /old-path {
return 301 https://new.com/new-path;
}5. Validate redirects – Run curl -I batch (or parallel-curl) to ensure every old URL returns 301 and the final URL returns 200.
6. Submit Change of Address – In Google Search Console, select the property, click Settings → Change of address and follow the wizard.
7. Update internal links – Run a site‑wide find‑replace in the CMS or database; verify with Ahrefs Site Audit that no internal 404s remain.
8. Monitor metrics – Track organic clicks, impressions, and average position via GSC API daily; flag a drop >5 % for >7 days.
9. De‑precate old domain – After 90 days of stable traffic, remove redirects gradually (30 % per week) while watching Moz Link Explorer for lost link equity.
Redirect vs Canonical vs 404
Redirect | Canonical | 404
-----------|-----------|----
Preserves link equity (≈90‑100%) | Passes equity only if both URLs indexed | Loses equity
Fastest recovery | Requires both URLs in index | No recovery