SHORT ANSWER
A WordPress site moving to Webflow needs a 301 redirect for every url that changes, and more urls change than the page list suggests. Slugs that stay the same still lose their trailing slash, blog posts usually move into a collection folder, and every category, tag, author, date and paginated archive stops existing. The work is three lists: the complete set of old urls, the redirects the old site already carried, and a decision for each url between a 301 to its successor and a 410 for pages with none.
What do WordPress urls look like?
It depends on the permalink setting, and a site that is a few years old often has had more than one. The patterns you will meet:
/post-name/ — the “post name” permalink. Posts and pages side by side at the root, always with a trailing slash.
/2021/03/post-name/ — the “day and name” or “month and name” permalink. Common on older blogs and news sites. The date is part of the url and has no equivalent in Webflow.
/?p=123 — the “plain” permalink, or the internal id WordPress still answers on any site. Rarely linked, but it turns up in old emails and Search Console.
/category/name/ · /tag/name/ · /author/name/ — archive pages WordPress generates on its own. Categories sometimes rank; tags and authors almost never.
/page/2/ · /category/name/page/3/ — pagination on every archive. Never worth a row each.
/wp-content/uploads/2020/05/file.pdf — uploads. Pdfs and images are linked from other sites far more often than people expect.
/feed/ · /comments/feed/ · /wp-json/ — rss and the api. Feed readers will keep asking; there is nothing to redirect them to.
EXAMPLE
a company blog that started in 2016 has posts under /2016/…/ to /2019/…/, then switched to /blog/post-name/. Both patterns are live, and the old ones are the ones with the backlinks.
Where do I get the complete list of old urls?
Not from a crawl alone. A crawler follows links, and the pages that matter most for a redirect map are exactly the ones nothing links to any more. Three sources, in order:
- The sitemap.
/wp-sitemap.xmlon a default install since WordPress 5.5;/sitemap_index.xmlwith Yoast or Rank Math. It is an index pointing at one file per post type, so use a tool that follows sitemap indexes. Silentfrog reads robots.txt and the sitemap index automatically when you start a run. - Search Console. Export the pages report for the last 16 months. It contains urls Google still sends people to, including ones the sitemap plugin excluded. Silentfrog imports the export as traffic data and lists the urls the crawl did not find (traffic data).
- The plugin’s redirect list. Redirection, Yoast Premium and Rank Math all keep a table of redirects, and it is the record of every url the site has already moved once. Export it before the site goes away.
The full method, including server logs and the Wayback Machine, is in finding the urls nothing links to.
the crawl form with the old site url, the new site url, the page cap, the sitemap option and the field for your own url list.
EXAMPLE
the sitemap lists 340 urls, the crawl finds 290, and Search Console adds 60 that are in neither: discontinued products and a 2018 campaign page that still gets 200 clicks a month.
What changes on the Webflow side?
Four things, and the first one affects every single url:
no trailing slash — WordPress serves /about/; Webflow serves /about and answers the slashed form with its own redirect. You do not need a row for it, but you must not write one either: a rule from /about/ to /about/ is a loop. Silentfrog normalizes both forms to the same key, so a page whose slug did not change is an exact match and stays out of the Webflow csv.
posts live in a collection — Webflow CMS items sit under the collection’s folder, typically /blog/slug or /post/slug. A post at the WordPress root therefore always moves.
no archives — There are no tag, author, date or paginated archive pages unless you build them. Categories exist only if you create a categories collection with its own template.
assets move to a cdn — Files uploaded to Webflow are served from Webflow’s asset domain, not from your site’s path. An old /wp-content/uploads/… url can be redirected to the new asset url, but it is a per-file decision.
EXAMPLE
/services/web-design/ on WordPress and /services/web-design on Webflow are the same page. No redirect needed, and none is exported.
Which sections map how?
Most of a WordPress site falls into one of four cases, and they need different tools:
pages with unchanged slugs — exact matches. Nothing to do.
a folder that moved as a whole — /blog/post-name/ becoming /blog/post-name is an exact match. /news/post-name/ becoming /blog/post-name is a directory rule with keep sub-paths, exported as one wildcard row, /news/(.*),/blog/%1. The live preview shows which slugs do not exist on the new site, and those land in needs review instead of being exported blind (directory rules).
date-based post urls — /2021/03/post-name/ to /blog/post-name is the one case a wildcard cannot express, because the target has to drop two segments and Webflow’s capture group keeps what it captures. Let the matcher do it per row: the slug is the last segment on both sides, so nearly every post scores as an exact or fuzzy match on slug and title. Sort by confidence and review the fuzzy ones.
archives — /category/name/ to the matching Webflow category page if you built one, otherwise to /blog. Tag and author archives to /blog as a single wildcard each, or a 410. Date archives such as /2021/ and /2021/03/ are a handful of rows picked by hand, because a rule on the year folder would also swallow every post below it. Redirecting forty tag pages to the blog index is not cheating; it is the closest page that exists.
redirect a whole directory
map every crawled page below a directory at once — optionally as a single webflow wildcard rule that also covers urls the crawl missed.
3 pages · 3 targets exist on the new site · + wildcard /blog/(.*) → /magazin/%1
- /blog/relaunch-checkliste → /magazin/relaunch-checkliste
- /blog/301-vs-302 → /magazin/301-vs-302
- /blog/ladezeit → /magazin/ladezeit
the directory rule form mapping /blog to /magazin with sub-paths kept, exported as a wildcard, and a live preview of how many pages it affects.
EXAMPLE
a site with 820 posts under date urls: 790 match on slug at confidence 1.0 because the slug and the title are identical, 25 land in needs review because the title was rewritten, and 5 have no successor and become a 410.
The redirects WordPress already has
A site that has been around for a while carries redirects in a plugin, in .htaccess, or in both. They are the record of every url the site already moved once, and every one of them that still gets traffic has to be carried over.
Do not carry over the rule as it stands. A plugin rule sends /old to /intermediate/; your new map sends /intermediate/ to /final. Imported like that, /old becomes a chain of two hops and loses part of what it passes on. The right row is /old,/final. The easiest way to get it is to put the plugin’s source urls into the url list you give the crawler: the tool then resolves them against the new site like any other old url, and the target it finds is the final one.
EXAMPLE
Redirection exports 140 rules. 90 of their source urls still appear in Search Console. Pasted into the url list, 85 match a page on the new site directly and 5 need a manual pick.
Uploads, feeds and the things that are not pages
Pdfs under /wp-content/uploads/ deserve a look in Search Console and in the backlink report. A price list or a whitepaper that other sites link to gets its own row pointing at the file’s new location; the rest can go. Image urls are almost never worth a redirect, but hotlinked ones will 404 once the server is gone, which is a reason to keep the old host up for a month and watch its logs.
/feed/ has no successor on Webflow unless you build an rss feed from the collection, in which case a single redirect row keeps subscribers. /wp-json/, /wp-admin/, /wp-login.php and /xmlrpc.php need nothing; letting them 404 is the point.
Doing it in one pass
- Export the plugin’s redirects and the Search Console pages report while the old site is still up.
- Start a run with the old domain and the Webflow staging domain (
your-site.webflow.io). The sitemap index is read automatically; paste the redirect sources and the Search Console urls into the url list (starting a run). - Add a directory rule for each folder that moved as a whole, tick export as wildcard rule, and check the preview for slugs the new site does not have.
- Add one rule each for
/tagand/authorpointing at the blog index with all to one page. Do not add one for a year folder; the posts under it are matched per row. - Sort by clicks, review what is left in needs review from the top, and verify the rows you accept.
- Download the Webflow csv, add the rows the site already had, and import it (importing into Webflow).
- After publishing, crawl the old url list against the live domain: every url should answer 301 once and then 200.
site settings → publishing → 301 redirects, or the data api
the two export buttons — webflow csv and generic csv — next to the option that includes needs-review matches.
In short
- Every WordPress url ends in a slash and every Webflow url does not; the tool treats them as the same page, so unchanged slugs need no row.
- Posts at the root or under a date always move; a folder that moved as a whole is one wildcard row, a date-based folder is matched per post on the slug.
- Category, tag, author, date and paginated archives have no Webflow successor; redirect the ones with traffic to the closest page and let the rest go.
- Export the plugin's redirects first and resolve their sources against the new site directly, or you import chains.
- The sitemap index plus the Search Console export is the complete list; a crawl alone misses the pages that matter most.