How to Fix Redirects in WordPress (301, Chains, Loops)
WordPress sites accumulate redirects from URL changes, deleted pages, migrated content and plugin moves. Without management, redirect chains build up, loops emerge, and old redirects point at deleted destinations. This guide covers WordPress-specific redirect management via Redirection plugin and .htaccess rules. Pair with redirect checker guide.
Step 1: Audit current redirects
Install Redirection plugin (free) → Tools tab → shows total redirect count. Crawl with Screaming Frog → response codes → see redirect chains and loops. Most WordPress sites have 50-500 redirects accumulated.
Step 2: Choose 301 vs 302 correctly
301 = permanent, passes link equity. Use for: URL structure changes, content migration, page consolidation. 302 = temporary, doesn't pass equity. Use for: A/B testing, geo-redirection, maintenance pages. Mistake: using 302 for permanent moves loses ranking authority.
Step 3: Configure Redirection plugin
Tools → Redirection → Add new. Source URL pattern (regex supported), target URL, HTTP code (301 default). Group redirects logically (post-migration, plugin-changes, content-cleanup) for easier maintenance.
Step 4: Fix redirect chains
Chain = A → B → C. Every hop adds latency and loses some equity. Find via Screaming Frog. Resolve by updating A's redirect to point directly at C (skip B). Redirection plugin → bulk edit option.
Step 5: Fix redirect loops
Loop = A → B → A. Causes infinite redirect. Find via Search Console errors or Screaming Frog. Resolve by removing one direction of the loop.
Step 6: Move common redirects to .htaccess
For high-traffic redirects, .htaccess rules are faster than plugin-handled redirects (no PHP overhead). Format: 'Redirect 301 /old-path /new-path'. Be careful — bad .htaccess crashes the site. Test on staging first.
Step 7: Set up monitoring
Redirection plugin tracks 404 hits. Review weekly — convert recurring 404s to 301 redirects. Search Console Coverage report shows new 4xx URLs.
Frequently Asked Questions
Does the Redirection plugin slow down WordPress?
Slightly — each request hits PHP to check the redirect table. For sites with <500 redirects, the impact is negligible. For 5000+ redirects, consider migrating high-traffic ones to .htaccess (server-level redirect, no PHP). The performance difference for moderate use isn't worth the .htaccess maintenance complexity.
Should I delete old redirects?
Eventually yes — but slowly. Old redirects still have some value if external sites link to old URLs. Rule of thumb: keep redirects for 2+ years after the original move. After that, audit which redirects still receive traffic; delete unused ones.
What's the difference between 301, 302, 307 and 308?
301: permanent (most uses, passes equity). 302: temporary (rarely needed). 307: temporary, preserves HTTP method (e.g., POST stays POST after redirect). 308: permanent, preserves HTTP method. For SEO, you almost always want 301. 307/308 are for technical/API redirects.
How do I redirect www to non-www (or vice versa) in WordPress?
Settings → General → set WordPress Address and Site Address to your preferred version. Add .htaccess rule: 'RewriteCond %{HTTP_HOST} ^www\\.example\\.com$ [NC]' / 'RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]'. Cloudflare can also handle this via page rules.
Why are my WordPress redirects not working?
Common causes: WordPress permalinks not flushed (Settings → Permalinks → Save), plugin order conflict (Redirection running after another plugin's rewrite), .htaccess not writable, or HTTPS/HTTP confusion. Debug step-by-step: test redirect via curl -I (shows actual response headers), compare to expected.