Contents7
A website migration almost never loses its traffic because of the new design. It loses it through its URLs: pages that received visits for years change address, and nothing tells search engines or visitors where they went. The document that prevents this is a list, boring and decisive: the redirect list. It comes after sorting the pages, as described in our method to decide which pages to keep, merge or delete, and before the switch. It is the core of any migration to a static site.
In short
A 301 redirect says a page has moved for good; a 302 says it is temporary, and Google does not treat them the same way.
The list starts from every URL that receives visits or links, not just the ones in the menu.
Each old URL goes straight to its final destination, in a single hop, and never in bulk to the home page.
The list is tested before the switch, URL by URL, then monitored afterwards, and redirects stay in place for at least a year.
What a redirect says
Definition
301 redirect
A server response that says: “this page has moved for good, here is its new URL”. The browser follows without the visitor noticing, and the search engine carries what it knew about the old URL over to the new one.
The status code is not a detail. Google’s documentation on HTTP status codes sorts them into two families:
Permanent: 301 and 308
Google reads a strong signal that the new URL is the one to keep
The right choice for a migration, merged pages, a changed slug
Temporary: 302 and 307
Google reads a weak signal, and the old URL may stay indexed
The right choice for a page under maintenance or a promotion that will come back
Google adds, in its page on redirects, that a JavaScript redirect should only be used when neither the server nor a meta refresh tag can do it: the search engine might never see it if rendering the page fails.
Where old URLs come from
The classic trap is redirecting the pages you know: the ones in the menu. The URLs that matter are the ones that receive something, and many of them are in no menu at all.
- A crawl of the current site.
Every URL reachable by following links, with its response code.
- The sitemap actually served.
The one the host returns, not the one you think you configured.
- Sixteen months of Search Console.
Pages that got clicks or impressions, seasons included.
- Inbound links.
URLs that other sites cite, sometimes pages forgotten for years.
- The URLs you have spread.
Campaigns, email signatures, PDF documents, printed QR codes.
The result is a four-column table: old URL, new URL, code (301 or 410) and the reason for the decision. The reason pays off the day someone asks why a page disappeared.
The rules that hold
One hop, to the final destination
Each redirect adds a request before the page displays, and chains grow with every redesign: the 2015 URL redirects to the 2019 one, which redirects to the 2026 one. Google sets clear markers:
is the target: redirect straight to the final destination
at most in a chain, ideally, and always fewer than 5
at least of keeping redirects, and as long as possible
Google’s crawlers, for their part, follow at most ten hops before giving up. In practice, a migration also rewrites the old redirects: each one now points to the new final URL, not to an intermediate step.
Never the home page by default
Redirecting every vanished page to the home page looks safe. Google treats it as a disguised 404 error, and a visitor looking for a specific page lands on one that does not answer them. A page with no replacement says it no longer exists (404 or 410); a merged page redirects to the page that took over its content.
From the field
Temporary redirects to the home page, counted as redirected pages
Palmora Property, a real estate portal we operate, learned it the hard way: six routing files sent broken URLs to the home page with temporary redirects. In Search Console, each broken URL showed up as a “page with redirect” instead of an error to fix. The remedy: real 404 errors, and 301s only where a page replaces the old one.
Variants of the same URL
An old URL often exists in several forms: with or without www, over http or https, with or without a trailing slash, with capital letters. Each variant must reach the same place, in one hop. Campaign parameters (?utm_source=…) must survive the redirect, or tracking for running campaigns breaks on the day of the switch.
On this site, a URL without a trailing slash still answers with a temporary redirect to its slashed version: it is a known gap of our hosting setup, which is why all our internal links carry the slash. Better to know your gaps than to discover them in Search Console.
Where the rules live
A redirect is written in one place only. On a static site, that is a file versioned with the site and reviewed like the rest. On this site, every rule sits in a single file in the repository:
- prefixes: the old
/en/prefix, and the Spanish and Chinese URLs, archived on 9 September 2026, redirect to English; - renames: the old blog categories, merged or renamed on 2 October 2026, lead to the new ones, articles included;
- exact URLs: the deleted pricing page redirects to the page that groups our offers;
- removals: three ghost pages answer 410, because no page replaces them.
A check refuses to deploy if a page still lives under a redirected URL: without it, the host would serve the page and ignore the rule. The order between files and redirects is not the same with every host either, as our comparison of static site hosting shows.
Test before, monitor after
The life of a redirect list
- Write
The list, with the reason for each decision.
- Test on the preview
Each old URL, its code, its destination, then a 200 on arrival.
- Switch
The list is live from the new site’s first second.
- Monitor
Error pages, queries that drop, and internal links updated.
Testing is done by script, not by hand, and with the right tool. On an online plush toy store we are putting back on its feet, a first check counted 516 temporary redirects that were in fact permanent: the platform did not answer the same way depending on the program asking. So check with a tool that behaves like a search engine crawler, and confirm a few URLs by hand.
After the switch, Google warns that a small or medium site takes a few weeks for most of its pages to move, and that visibility can fluctuate meanwhile. Two moves shorten the period: update internal links to the new URLs, so no visitor goes through a redirect, and submit the new sitemap.
Redirects in the rest of the project
A clean list protects traffic; it does not create it. The rest of the project matters just as much: a migration is priced with its takeover of the existing site (how much a business website costs), each hop adds a request that weighs on speed as measured by Core Web Vitals, and a multilingual site adds a list per language (one language, one URL). Leaving a WordPress site that keeps getting hacked is often what triggers the migration; form URLs change too (forms and search on a static site), as do those of a blog that changes tools (Markdown in the repository or a CMS, or a headless site with Astro and Sanity). The new site must be accessible, generate enquiries, can be hosted in Europe, and pages rewritten with AI raise the question of disclosing it.
Our static site migration starts with this list: an inventory of URLs, a written decision for each, redirects tested on the preview, then Search Console monitored for fourteen days after the switch. A new site with no history falls under the business website offer, which has nothing to redirect.
Frequently asked questions
301 or 302 redirect during a migration?
301, or 308, which Google treats the same. A 302 says the move is temporary: Google reads a weak signal, and the old URL may stay indexed instead of the new one. Keep 302 for a page that will come back, such as a page under maintenance or a seasonal offer.
How long should redirects be kept?
Google recommends at least a year, and as long as possible. A redirect costs almost nothing to maintain on a static site: it is one line in a file. Old links, bookmarks and printed documents keep working for years after the migration, and each one should still lead somewhere.
Can all old pages be redirected to the home page?
No. Google treats this as a disguised 404 error, and visitors do not find what they were looking for. Each old page that has a replacement redirects to it, one by one. A page with no replacement answers 404 or 410, which removes it cleanly from the index instead of letting the crawler come back to it.
Should pages with no visits be redirected?
Not necessarily. A page with no visits, no inbound links and no enquiries can answer 410 if no page replaces it. Check sixteen months of Search Console before deciding, and look for its inbound links: a page your visitors ignore can still be cited by a site that sends you prospects.
Sources
- Google Search Central, HTTP status codes and network errors (new tab)developers.google.com
- Google Search Central, redirects and Google Search (new tab)developers.google.com
Google Search Central, HTTP status codes and network errors
Read on developers.google.com(new tab)Jim · founder of Brain Plus AI
Also in websites, migration and astro

Practical guide7 min
Website redesign: which pages to keep, merge or delete
A redesign that starts with the mock-ups often ends up losing pages that were bringing in business. Sorting the existing site first, page by page and on data, keeps what the site has earned over ten years.

Understand8 min The topic guide
Static site with Astro: why migrate, without losing your SEO
A static site generated by Astro replaces an ageing WordPress or Drupal without changing a single address: pages in plain HTML served by a CDN, no plugin to patch, and a publishing chain with rollback. What it changes, how the migration goes, and when not to do it.

Choose and price7 min
Hosting a static site: Cloudflare, Netlify or a VPS
A static site can be served from almost anywhere, but not at the same price or with the same pitfalls. What Cloudflare and Netlify count, the settings that surprise, and when a server of your own makes sense.
