Skip to content

Leaving WordPress without losing your search rankings ​

The traffic dip after a site moves to a new platform is so common that SEO people plan for it. It almost never comes from the new technology. It comes from things that changed on the way: URLs that moved without a redirect, titles and descriptions that went back to defaults, canonical tags pointing somewhere new, pages that were indexable and now say noindex, a sitemap at a different address.

Search engines see a site as its addresses and what each one answers. Keep those the same and a move is a non-event for them. kitloom is built so that they stay the same.

The same URLs ​

kitloom does not invent its own routing for content. It reads WordPress's permalink settings (permalink_structure, the category and tag bases, the static front page and posts page) and handles a request the way WordPress does: rewrite rules, the main query, then the template hierarchy. A post at /2019/04/a-post/, a page at /services/web-design/, a category at /category/news/page/2/ all answer at the same address.

The canonical redirect behaves like WordPress's too: ?p=123 and ?page_id=45 lead to the pretty address, and old links to /wp-content/uploads/… get a 301 to where the file lives now.

The same head ​

kitloom/seo works on Rank Math's own data, so nothing has to be re-entered:

  • Titles and descriptions: each record's own (rank_math_title, rank_math_description), and the templates for every post type, taxonomy and archive with their variables (%title% %sep% %sitename%).
  • Robots and canonical per record, the primary category, breadcrumb titles, Open Graph and Twitter tags.
  • schema.org markup: the organisation, the website with its search, breadcrumbs, articles.
  • Webmaster verification codes for Google, Bing and the others, and Google's HTML verification file, so Search Console keeps recognising the site.

The same redirects and 404 log ​

kitloom/redirects runs on Rank Math's redirection tables. Every rule the site collected over the years (exact, contains, starts with, regex; 301, 302, 307, 410) keeps working, and the 404 monitor goes on writing to the same log. After the switch it is where you look first for addresses that people or crawlers still ask for.

Sitemaps and robots.txt ​

Sitemaps are served at Rank Math's addresses (/sitemap_index.xml and the files under it) with the same settings: which types and taxonomies are listed, how many links per file. robots.txt keeps its text. Instant indexing sends new and changed addresses to IndexNow and Google's Indexing API, as Rank Math did.

Checking it before the switch ​

The point of keeping everything is that you can verify it. kitloom can draw the site from the live database with a read-only user, and compare-sites.php compares WordPress and kitloom address by address, taking the addresses from both sites' sitemaps and any list you give it. Give it your most visited pages from Search Console. For each address it checks:

  • the status code and the redirect target;
  • robots, with an error when one side has noindex;
  • title, description and canonical;
  • the content and, on archives, the posts listed and their order.

An error on any of those is something to fix before the switch, not to discover in Search Console a month later.

Known differences ​

Some things are different on purpose, and it is better to know them up front:

  • RSS feeds: kitloom sites have none, so /feed/ answers 404. Redirect it if it had subscribers.
  • /wp-sitemap.xml, WordPress's own sitemap, is not served; /sitemap_index.xml is.
  • Query addresses other than ?s=, ?p=, ?page_id=, ?paged= and ?cpage= (such as ?cat=3) are not read.
  • Yoast SEO is imported once. SEO → General → Import from Yoast SEO (or php artisan seo:import --from=yoast --dry-run to see it first) takes the titles, descriptions, robots, canonicals and social meta of posts, terms and authors, and the templates of Titles & Meta, into Rank Math's keys. Run it before you compare the sites.
  • The Redirection plugin's rules are imported once too, from Redirects → Settings → Import from Redirection, with their hits. Rules that ask more than the address (signed in, referrer, browser, cookie) stay behind, and the report lists them with the reason.

After the switch ​

Watch three things in the first days: the 404 log in the admin, Search Console's page indexing report, and the server's error log. Submit the sitemap again in Search Console so it is fetched from the new application, and keep the old WordPress on a backup for a while in case something needs comparing.

An AI agent makes this first week shorter. Connected to the site through kitloom's MCP server, it reads the 404 log (not_found_list), turns a missed address into a redirect (redirect_from_404) and fills or fixes titles and descriptions (seo_update), as the user whose key it holds, with every change in the activity log: "Which addresses gave 404 since the switch? Redirect the ones that have a new page." See Run your site from Claude or Cursor.

The full procedure is in Migrate from WordPress, and what kitloom/seo reads and writes is in its module guide.

Last updated:

kitloom — modules and themes for Laravel.
Pricing · Services · License · Refunds · Privacy · Community · [email protected]