We create digital solutions that work for businesses
You moved the site to https, changed the URL structure or merged two pages. Everything opens, visitors notice nothing. Then a month later rankings slip, and the cause gets blamed on content, competitors or the latest Google update.
Often the reason is simpler: the redirect was set with the wrong code. Here is how 301 differs from 302, why chains hurt, and how to check all of it in five minutes.
Both codes send the visitor onward. To them there is no difference at all — the browser just opens another page. To a search engine these are two fundamentally different statements.
| Code | What it tells the search engine | What happens to equity |
| 301 | The old URL will never return | Transfers to the new page |
| 302 | This is temporary, the old URL returns | Stays with the old URL |
This is where the costliest mistake hides. You moved permanently but used a 302 — so Google keeps treating the old URL as primary, waiting for it to come back. Link equity built up over years never reaches the new page.
The trouble is that everything looks fine. The site opens, orders come in, nobody raises an alarm. The decline starts weeks later, when the connection to the migration is no longer obvious.
The rule is simple: ask yourself whether the old URL will come back.
301 — a permanent redirect:
302 — temporary:
In nine cases out of ten you want a 301. When in doubt, use it: an error in that direction costs less.
The second common problem is a URL that leads not directly but through several hops. For example: http://site.com/old → https://site.com/old → https://site.com/new.
Technically it works. But every hop drains some signal and adds another round trip to the server. On a poor mobile connection a person notices it, and Google typically stops following after about five hops.
The worst kind of chain is a loop, where a URL leads back to itself after a few steps. The browser gives up and the visitor sees an error.
You can trace your own site with the redirect chain checker: it shows every hop with its code and response time.
On Apache the rules live in the .htaccess file in the site root and take effect as soon as you save:
| Task | Rule |
| A single page | Redirect 301 /old-page/ /new-page/ |
| Whole site to https | Via RewriteCond %{HTTPS} off and RewriteRule with the [R=301,L] flag |
On Nginx redirects are declared in the server block, and the server must be reloaded afterwards or the rule will not apply.
WordPress and similar platforms have redirect plugins. Convenient, but remember that each rule there means a database query on every request. With hundreds of rules that shows.
Everything to the homepage. A section was removed and every URL sent to the homepage. Google reads that as a soft 404 and transfers no equity at all. The right approach is to redirect to the closest match, and where none exists, serve an honest 404.
A redirect to a 404. The rule points at a page that was later deleted. The visitor hits an error, the equity vanishes, and without a check it is hard to notice.
Dropped parameters. The rule strips the query string and the UTM tags go with it. The ads run, the page opens, yet analytics shows every visit as direct. One of those problems discovered six months later.
Internal links to old URLs. The site links to an address that redirects. The redirect fires on every menu click — a waste of both time and crawl budget.
Google has to recrawl the pages to see the change. For a small site that is usually one to two weeks; for a large catalogue up to a month. Submitting the main pages in Search Console speeds it up.
The old URL will not leave the index immediately — it may keep appearing for a while. That is normal and does not mean the redirect is broken.
Use 301 for permanent changes and 302 only for what is genuinely temporary. Keep chains down to a single hop, preserve parameters, and point internal links straight at the final URL.
Check yours in five minutes: redirect chain, single URL check, canonical tags.
Let’s create something amazing together