Site migrations, redirects and recovery
Pre-migration inventory, URL mapping and 301 rules, staging controls, launch checks, monitoring for traffic loss, and what to do about a manual action.
Before the move
- Crawl the current site completely and export every URL that returns 200, plus every URL with external links pointing at it. The second list is the one people forget.
- Export 90 days of Search Console queries and landing pages. This becomes the priority order for redirect mapping - traffic first.
- Build the redirect map as a file in version control. A spreadsheet that lives in someone's inbox will not survive the launch.
- Lower TTLs on DNS records that will change, at least 24 hours before the cutover.
- Agree how to roll back. A migration with no rollback path is a bet, not a plan.
- Remove any
noindexfrom the staging site, and never let staging be crawlable at launch time.
| Redirect rule | Do | Do not |
|---|---|---|
| Status code | 301 for permanent moves | 302 for a permanent move |
| Targets | Point at the final destination | Chain through two or three hops |
| Coverage | One redirect per old URL | Blanket redirect everything to the homepage |
| Query strings | Preserve parameters that matter | Drop tracking parameters that were never indexable |
| Trailing slash | Match the destination exactly | Rely on a second redirect to fix it |
| Case | Redirect uppercase to lowercase | Serve both as separate URLs |
# one hop, explicit, and always to the final URL
server {
listen 443 ssl;
server_name old.example.com;
return 301 https://new.example.com$request_uri;
}
# a rewritten path, mapped one to one
location = /products/widget-200 {
return 301 https://new.example.com/p/acme-widget-200;
}
# everything else that used to exist under a removed section
location ~ ^/legacy/(.*)$ {
return 301 https://new.example.com/guides/$1;
}Launch checks
Launch checklist
DNS records resolve to the new host, TTL lowered beforehand
TLS valid certificate covering all hostnames, no mixed content
robots.txt allows crawling, no stray Disallow: /, staging rules removed
noindex none on any page you want indexed
Sitemap regenerated, submitted, URL count matches expectations
Canonicals point to the new URLs, not the old ones
Redirects spot-check 50 URLs from the traffic-ranked export
Structured markup validates on the new templates
404s the new 404 page returns a 404 status
Analytics tracking fires on the new domain
Internal no links left pointing at the old hostnames- Test the redirect map before the DNS switch: request the old URLs with a Host header override and confirm a single 301 to the right destination.
- Keep the old domain registered and serving redirects for years. Letting it lapse hands the redirect traffic to whoever registers it next.
- Do not run two competing changes at once. A migration plus a redesign plus a domain move makes the cause of any drop impossible to identify.
Monitoring and recovery
| When | What to check | Expected |
|---|---|---|
| Day 1 | Crawl errors, redirect correctness, robots and noindex | Clean, no 5xx |
| Day 3 | Coverage report, whether new URLs are being discovered | Submitted count rising |
| Week 1 | Impressions and clicks by landing page, compared to the pre-migration export | Position of the same pages roughly stable |
| Week 4 | Rankings for the priority query list | Recovering toward baseline |
| Week 12 | Full traffic and conversion comparison | At or above the pre-migration baseline |
- Expect a dip. Some fluctuation for days or weeks is normal because signals are re-evaluated on the new URLs.
- Diagnose by segment: if only one section dropped, that section's redirects or canonicals are wrong. If everything dropped evenly, the problem is site-wide - robots, canonicals or the domain.
- A drop that is still deepening after three weeks is not normal settling. Find the specific fault rather than waiting.
- For a manual action, read the exact wording. A links action needs removal or disavowal plus a reconsideration request; a thin content action needs the content fixed.
- If a reconsideration request is rejected, fix more and be specific about what changed. A repeat of the first request will be rejected again.
⚠️
Do not disable the redirects once traffic recovers. A URL that was redirecting and now returns 404 loses everything it accumulated and produces errors in the coverage report. Redirects from a migration are permanent infrastructure, not a launch-day task.
FAQ
How long should redirects stay in place?
Permanently, or at least as long as anything links to the old URLs - which in practice means indefinitely. Removing them is a self-inflicted traffic loss with no upside.
Can I migrate and redesign at the same time?
You can, but you will not know which change caused the outcome. If you must, keep the URLs and the templates stable and change only the content, or migrate first and redesign after traffic stabilises.
Related
Technical SEO and measuring it Site architecture, URLs and internal linking
Last refreshed 2026-09-18.