Tips

Moving an 8-year-old WordPress site without losing a single URL

We moved synapsereality.io off WordPress. All 2,026 old addresses in the redirect map resolved in one hop on launch night. Here is the map.

Published
Author
Ben
Filed under
Tips

On 23 September 2026 we moved this site off WordPress onto a static build made with Astro. The redirect map listed 2,026 old addresses. That night every one of them passed on production. A kept page returned 200 at its old path. A redirect went straight to a live page, in one hop.

This post is the map: what the old site held, what stayed where it was, where the rest went and how we checked it. It also says what the check can’t tell you yet, which is whether the search traffic followed.

What was on the old site

WordPress had been running here for eight years. Most of its addresses were never pages anyone wrote. They were archives and alternate forms of the same posts.

Kind of address Count
Tag archives 1,189
Query-string links (?p= and ?page_id=) 382
Posts 330
Pages 52
Pagination, author and other orphan archives 46
Date-based post links 13
Old redirects recovered from the Wayback Machine 6
Categories 5
Feed aliases 3
Total 2,026

The sitemap listed only part of this.

The query-string links, the date links and the six hidden redirects came from other sources. WordPress still answered ?p= links with a redirect, so we recorded where each post ID led before we switched it off. The date links had returned 404 on the old site since an earlier permalink change. Matching them to the current post sends those old links somewhere real again.

Which URLs kept their address, and why?

115 addresses kept their exact path.

  • 77 MAP guides. Minimum advertised price was the one topic the old site covered in depth. We rewrote each guide but left its URL alone. A kept URL doesn’t have to be recrawled and matched to a new one.
  • 30 other posts, rewritten in place for the same reason.
  • 4 pages, which are the home page, /blog/, /services/ and /map-services/.
  • 4 blog pagination pages that the new build happens to serve at the same paths.

Everything else changed address, because the new site is organised by service and the old one by date and tag.

Where the rest went

  • Posts. 223 moved. 127 were folded into a newer page on the same topic, nearly all of them service pages. 96 had no close match and go to the blog index.
  • Tags. A tag that held one post points to that post, or to wherever the post moved. That covers 748 of the 1,189. Tags with more posts go to the blog index.
  • Query-string links go to wherever the post or page with that ID lives now.
  • Date links go to the post they once named, by exact slug where one exists.
  • Feeds go to the new /rss.xml.

The 96 posts sent to the blog index are the weak spot. Google’s site move guidance warns against sending many old URLs to one unrelated page. It says Google can treat those as soft 404s. For thin tag archives that is an acceptable end. For those 96 posts we’re watching Search Console.

Two rules the map has to pass

One hop. Google can follow up to 10 redirects in a chain, and the same guidance still says to redirect “to the final destination directly”. Our build checks this. If any destination is itself the source of another redirect, the test fails and the change doesn’t ship.

No blanket redirect to the home page. It is the easy way to make every old link return something. It is also the case Google names above. One rule does point at /. It is an old page ID whose page is now the home page.

How we checked it

The check ran from our own server, because a laptop’s DNS cache kept answering with the old site during the switch. verify_redirects.py sent a HEAD request for each rule. It followed one redirect and checked that the target returned 200. The first run started at 23:52 UTC on 23 September and took 246 seconds. We changed where the old community posts point on 24 September, then ran it again the same day. All 2,026 rules passed in one hop.

File Rules Expected Passed
Main map, redirects 1,465 301, then 200 1,465
Main map, kept pages 111 200 111
Legacy forms, redirects 446 301, then 200 446
Legacy forms, kept pages 4 200 4

We also sent 67 of the rules through www.synapsereality.io. All 67 reached the right page in one hop. Plain http:// takes two, because Cloudflare upgrades the request to HTTPS before our rule runs.

The new site itself: a crawl on 24 September found all 189 URLs in the sitemap returning 200, each with a canonical pointing at itself.

You can repeat any of this yourself:

curl -sI https://synapsereality.io/map-blogs/ | grep -iE '^(HTTP|location)'

That old category page answers 301 with /blog/map-monitoring/, and that page answers 200.

What this does not show

It shows that the old addresses still work. It doesn’t show that the search traffic followed them. The day after the switch, Google still showed some MAP guides under their old WordPress titles. We’ll add the Search Console figures after 23 October 2026, when the first 30 days are in. The same day we also checked how often AI answers cite the new site, which is in AEO vs SEO.

This is the kind of rebuild our web development service does. Got an old site with years of URLs behind it? Send us the address and we’ll tell you what a map for it would take.

Start a conversation

Discuss your growth plans.

Book a strategy call