301 Redirect
A 301 Redirect is an HTTP status code (301 Moved Permanently) that informs browsers and search engines that a web page's URL has permanently moved to a new address. It automatically directs users and search engine crawlers arriving at the old URL to the new URL, while transferring the link equity accumulated by the original page to the new URL.
A 301 Redirect is an HTTP status code (301 Moved Permanently) that informs browsers and search engines that a web page's URL has permanently moved to a new address. It automatically directs users and search engine crawlers arriving at the old URL to the new URL, while transferring the link equity accumulated by the original page to the new URL.
Why It Matters
Search engines use the number and quality of backlinks pointing to a page as key signals when determining rankings. If you change a URL without setting up a 301 redirect, all the link equity the original URL had accumulated will be lost, potentially causing a sharp drop in search rankings. According to research by Moz and Ahrefs, a properly implemented 301 redirect transfers approximately 90–99% of the original page's link equity to the new URL. Google's John Mueller has also officially confirmed that "301s don't lose value." Therefore, whenever a permanent URL change occurs — such as a domain migration, site redesign, or URL structure change — setting up a 301 redirect is an essential step from an SEO standpoint.
301 vs 302 Differences
| Attribute | 301 (Moved Permanently) | 302 (Found / Temporary) |
|---|---|---|
| Meaning | URL has permanently moved | URL has temporarily moved |
| Link equity transfer | 90–99% transferred to the new URL | Remains with the original URL; not transferred to the new URL |
| Search index | Over time, the old URL is removed from the index and replaced by the new URL | The old URL remains in the index |
| Browser caching | Cached permanently | The original URL is re-checked on every request |
| Use cases | Domain changes, URL restructuring, HTTP-to-HTTPS migration | A/B testing, maintenance pages, seasonal promotions |
Although Google has stated it can technically handle both 301 and 302 redirects, using a 302 for a permanent change causes search engines to continue crawling the original URL, wasting crawl budget. Link equity may also not transfer as intended. It is critical to choose the appropriate status code for each situation.
How to Set Up
Apache (.htaccess)
Redirect 301 /old-page https://www.example.com/new-page
Nginx (nginx.conf)
server {
location /old-page {
return 301 https://www.example.com/new-page;
}
}
Next.js (next.config.js)
module.exports = {
async redirects() {
return [
{
source: '/old-page',
destination: '/new-page',
permanent: true, // 301
},
];
},
};
After configuration, always use Google Search Console's URL Inspection tool to verify that the redirect is working correctly and that the new URL is being properly indexed. It is also recommended to keep redirects active for at least one year.
Common Mistakes
- Redirect Chains: When redirects pass through multiple hops (e.g., A to B to C), link equity is lost at each step and page load speed decreases. Whenever possible, link directly from A to C.
- Infinite Redirect Loops: Configurations where A points to B and B points back to A cause the browser to throw an "ERR_TOO_MANY_REDIRECTS" error. Always test after configuration.
- Redirecting to an Unrelated Page: Setting up a 301 redirect to a page with entirely different content will cause Google to treat it as a soft 404 and refuse to transfer link equity. Always redirect to a URL with similar or identical content on a 1:1 basis.
- Using 302 Instead of 301: Using a 302 for a permanent URL change causes search engines to keep crawling the old URL, and link equity will not be transferred to the new URL.
- Not Accounting for Browser Cache: 301 redirects are permanently cached by browsers. Even if you reverse a mistakenly configured 301, the previous setting may persist in users' browsers, so apply them carefully. When necessary, it is safer to include a
Cache-Control: no-cacheheader alongside the redirect.
Related inblog Posts
How inblog Helps
inblog's redirect management lets you set up 308 (permanent, equivalent to 301) and 307 (temporary) redirects without code.