A 301 redirect is the standard way to permanently move a URL. When a browser or crawler requests the old URL, the server responds with HTTP status code 301 and the new destination. Search engines transfer most of the original page's ranking signals — backlinks, authority, relevance — to the new URL.
This matters because URLs change constantly. Site migrations, slug updates, domain switches, and content consolidation all create situations where old URLs need to point somewhere new without losing the SEO value they've accumulated.
How 301 Redirects Work
The redirect happens at the HTTP level before any page content loads:
- A user or crawler requests
example.com/old-page - The server returns HTTP 301 with a
Location: example.com/new-pageheader - The browser automatically follows the redirect to the new URL
- Search engines update their index to reflect the new URL over time
Google has confirmed that 301 redirects pass link equity. The exact amount varies — Google's John Mueller has stated that "30x redirects don't lose PageRank anymore" as of 2016, meaning 301s, 302s, and 307s all pass signals similarly. However, 301s remain the best practice for permanent moves because they send the clearest signal of intent.
301 vs 302 vs 307: When to Use Each
| Redirect Type | HTTP Code | Signal | Use When |
|---|---|---|---|
| 301 | Permanent | URL has moved forever | Site migrations, slug changes, domain moves |
| 302 | Temporary (Found) | URL will return later | A/B tests, maintenance pages, seasonal content |
| 307 | Temporary (Strict) | Same as 302, preserves method | API redirects where POST must stay POST |
| 308 | Permanent (Strict) | Same as 301, preserves method | API migrations where method matters |
Use 301 when the old URL will never come back. Use 302 when the original URL will eventually be restored. Getting this wrong doesn't catastrophically break SEO, but it delays how quickly search engines consolidate signals.
How to Implement 301 Redirects
Server-Level (Nginx)
server {
rewrite ^/old-page$ /new-page permanent;
}
.htaccess (Apache)
Redirect 301 /old-page https://example.com/new-page
Next.js (Application-Level)
// next.config.js
module.exports = {
async redirects() {
return [
{
source: "/old-page",
destination: "/new-page",
permanent: true
}
]
}
}
Server-level redirects are faster because they execute before the application processes the request. Application-level redirects are easier to manage at scale and keep redirect logic in version control.
Common 301 Redirect Mistakes
Redirect chains. When URL A redirects to URL B, which redirects to URL C, you create a redirect chain. Each hop loses a small amount of crawl efficiency and slows page load. Google follows up to 10 hops but recommends keeping chains to a single redirect.
Redirect loops. When URL A redirects to URL B and URL B redirects back to URL A, browsers display an error. Crawlers stop following the chain. This usually happens during migrations when old and new redirect rules conflict. See redirect loops for diagnosis steps.
Redirecting to irrelevant pages. Redirecting an old product page to the homepage instead of the closest equivalent product page wastes the original page's topical relevance. Match old URLs to their closest content equivalent.
Forgetting to update internal links. After setting up 301s, update your internal links to point directly to the new URLs. Redirects add latency and waste crawl budget when every internal link sends crawlers through a redirect first.
Using 301 for temporary changes. If you're redirecting during a redesign and plan to restore the original URL, use a 302. A 301 tells search engines to permanently replace the old URL in their index.
Checking 301 Redirects
Verify your redirects are working correctly:
- Browser DevTools — Open Network tab, request the old URL, confirm 301 status code and correct Location header
- curl — Run
curl -I https://example.com/old-pageto see response headers - Google Search Console — Check Coverage report for redirect-related issues
- Crawl tools — Run a full crawl to find redirect chains and loops across the site
SEO Impact of 301 Redirects
When implemented correctly, 301 redirects preserve most ranking signals. Google's indexing system consolidates the old and new URLs over days to weeks. During this transition period, you may see temporary ranking fluctuations.
For large-scale migrations (hundreds or thousands of URLs), the consolidation period can extend to months. Batch your redirects, monitor Search Console for coverage issues, and keep old redirect rules in place for at least 12 months.
FAQs
How long should I keep 301 redirects active?
At minimum one year. Google recommends keeping redirects permanent — once set, leave them in place indefinitely. Removing a 301 before search engines have fully processed it can cause the old URL to return as a 404, losing any equity that was being passed.
Do 301 redirects pass all link equity?
Google has stated that 301 redirects no longer lose PageRank. In practice, the destination page receives the vast majority of the original page's ranking signals. The transfer isn't instantaneous — it takes days to weeks for Google to fully consolidate.
Can too many 301 redirects hurt SEO?
Having many redirect rules doesn't directly hurt rankings. But redirect chains (A → B → C) and redirects that create loops do cause problems. Keep each redirect as a single hop from old URL to final destination.
Should I 301 redirect deleted pages?
If the deleted page had backlinks or traffic, redirect it to the closest equivalent content. If no equivalent exists, let it return a 404 or 410 (gone). Redirecting every deleted page to the homepage dilutes signals and creates a poor user experience.