1---2name: seo-redirects3description: Use when planning redirects or a site migration — status codes, link equity, redirect chains.4---56<objective>7Covers redirect and migration planning: the 301/302/307/308 status-code decision table and their SEO/link-equity impact, the full migration checklist (URL mapping CSV, implementing 301s, staging tests, updating internal links and sitemap, Search Console Change of Address, 90-day 404 monitoring), redirect-chain and redirect-loop detection and fixes, common redirect patterns (HTTP→HTTPS, www/non-www, trailing slash, slug changes), and anti-patterns (mass redirect-to-homepage, soft 404s, JS-based redirects, meta-refresh redirects).8</objective>910# Redirects & Migrations1112## Status Codes1314| Code | Use Case | SEO Impact |15|------|----------|------------|16| 301 | Permanent move | Passes ~99% link equity |17| 302 | Temporary (e.g. A/B test) | Does NOT pass equity long-term |18| 307 | Temporary, preserves HTTP method | Same as 302 for SEO |19| 308 | Permanent, preserves HTTP method | Same as 301 for SEO |2021## Migration Plan22231. **Map old URLs → new URLs** (CSV: source, target, status)242. **Implement 301s** for every old URL253. **Test in staging** with `curl -I <old-url>` → expect `301 Location: <new>`264. **Update internal links** to point directly to new URLs (avoid chain)275. **Update sitemap.xml** with new URLs only286. **Submit to Google Search Console** via Change of Address tool (if domain change)297. **Monitor 404s** for 90 days post-launch3031## Chain Detection3233- **Chain**: A → B → C (loses ~10% equity per hop)34- **Loop**: A → B → A (infinite, broken)35- Fix: A → C directly3637## Common Redirects3839| From | To | Status |40|------|-----|--------|41| `http://` | `https://` | 301 |42| `www.` | `non-www` (or reverse, pick one) | 301 |43| `/page/` | `/page` (or reverse) | 301 |44| Old slug | New slug | 301 |4546## Anti-Patterns4748- ❌ Redirecting everything to homepage (mass 404 → 301 to /) → looks spammy49- ❌ Soft 404s (200 status on missing pages)50- ❌ JS-based redirects (Google may not follow)51- ❌ Meta refresh redirects > 0s (use server-side)