WordPress to Framer redirects: wildcards, the Redirect Sync csv and date-based posts

framer has wildcards and a csv importer; silentfrog has the from,to file. how the two fit.

by Max Lorenz, Goodaim · updated

wordpress → framer
  • /about/slash
    /about
  • /news/*wildcard
    /blog/:1
  • /2021/03/post-name/301
    /blog/post-name
  • /tag/*wildcard
    /blog

SHORT ANSWER

A WordPress site moving to Framer needs a 301 for every url that changes. Pages with unchanged slugs need nothing, since Framer answers the trailing-slash form with its own redirect. Blog posts move into a CMS collection such as /blog/, and WordPress’s archives disappear. Framer keeps redirects under site settings, Hosting, Redirects, supports * wildcards with :1 capture groups, and imports a from,to csv through its Redirect Sync plugin. Build the page-by-page pairs with a mapper, import them as that csv, and write the few folder rules by hand as wildcards.

How redirects work in Framer

Framer’s documentation puts redirects under Site Settings, Hosting, Redirects: an old url and a new url per rule, applied in the order of the list, reorderable by drag and drop, active after the next publish. Sources are paths on the current domain; a redirect between two domains belongs at the hosting provider (Framer, how to set up redirects). The pricing page lists site redirects for the Pro plan and Enterprise, not for Free or Basic (Framer pricing).

* and :1 — an asterisk matches the rest of a path, and :1, :2 in the new url insert what the first and second asterisk matched. Framer’s own example: /blog/* matches both /blog/hello-world and /blog/2022/07/18/hello-world.

:year · :month · :slug — named segments match exactly one segment between slashes, so /blog/:year/:month/:day matches /blog/2022/07/18 and nothing deeper. The documentation shows them on the old side; it does not say whether a named segment can be reused in the new url, so test before relying on it.

order — the first rule that matches wins. Exact rules go above wildcard rules, or a folder rule swallows the specific redirects inside it.

status code — the documentation describes redirects as the way to keep search rankings and offers no choice of status code. Check what your published site actually sends with curl -I on one old url after the first publish.

Bulk import with Redirect Sync

Typing hundreds of rules into the settings panel is nobody’s idea of a relaunch. Framer’s Redirect Sync plugin, made and open-sourced by Framer, exports all redirects of a project as a csv and imports a csv back (Redirect Sync). The file needs two columns, from and to; from paths start with a slash and are relative; an optional expandToAllLocales column sets that option per rule. A row whose from matches an existing redirect updates it rather than adding a duplicate (Framer, bulk importing redirects).

from,to
/about-us,/about
/2021/03/rebrand-lessons,/blog/rebrand-lessons
/services/web-design,/services/websites

Silentfrog has no Framer-specific export, and it does not need one: the plain path pairs format writes exactly this, a from,to header and one path pair per line. It has no wildcards, so a directory rule in the project is written out as the individual urls it covers. That is the honest trade-off: the file imports as it is, and the wildcard rules you want in Framer are typed into the settings panel by hand, which for a WordPress site is rarely more than three or four.

EXAMPLE

a map of 260 page and post rows plus a directory rule covering 80 posts under /news/: the pairs file has 340 rows. Import it as it is, or delete the 80 rows and type one rule, /news/* to /blog/:1, instead.

Which WordPress urls need what?

wordpress patternon framerhow
/about//aboutnothing; framer strips the slash itself
/post-name//blog/post-nameone row per post
/blog/post-name//blog/post-namenothing, if the collection is /blog
/news/post-name//blog/post-nameone wildcard: /news/* → /blog/:1
/2021/03/post-name//blog/post-nameone row per post, matched on the slug
/category/name/a category page, or /blogrows by hand for the ones with traffic
/tag/name/ · /author/name//blogone wildcard each: /tag/* → /blog
/page/2/ · /feed/—let them go
/wp-content/uploads/…/file.pdfthe file’s new urlone row per linked file
/wp-admin/ · /wp-login.php—nothing; a 404 is the point

the trailing slash — WordPress urls end in a slash, Framer urls do not. On framer.com, itself a Framer site, /pricing/ answers with a 308 to /pricing. Silentfrog treats both forms as one page, so an unchanged slug is an exact match and never becomes a row, and the sources it writes have no slash either. A request for an old /post-name/ may therefore pass Framer’s slash redirect before your rule matches; check one such url after publishing, and add the slashed form as a second row if it does not resolve.

case — Framer paths are case-sensitive (/Pricing is a 404 on framer.com). WordPress slugs are lowercase, and Silentfrog writes lowercase paths, so this only matters for links someone typed by hand.

Date-based post urls

/2021/03/post-name/ to /blog/post-name has to drop two segments. A Framer pattern like /*/*/* could in principle capture the slug as :3, but an asterisk matches more than one segment in Framer’s own example, which makes a rule with three of them hard to predict, and it would also catch every other three-segment url on the site. The predictable route is one row per post.

The matcher does that well: the slug is the last segment on both sides, so a post whose slug, title and h1 survived the move scores as a match at full confidence. Posts whose slug changed in the Framer CMS come out as fuzzy matches on the title and land in needs review. Sort by confidence and read those.

EXAMPLE

a blog with 320 posts under date urls: 301 of them pair at or near full confidence, 15 land in needs review because the title was shortened for the new design, 4 have no successor.

Folders and archives

A folder that moved as a whole, /news/ to /blog/, is a directory rule with keep sub-paths in Silentfrog. The live preview shows which slugs do not exist on the Framer site, so those land in needs review instead of being redirected to a 404 (directory rules). Whether you then import the rows the rule produced or type the rule into Framer as /news/* to /blog/:1 is up to you; the wildcard also catches urls the crawl never found.

redirect a directory

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.

a directory rule with its live preview: the rows it covers, and the targets that do not exist on the new site.

Tag and author archives almost never have a successor on Framer. One rule each to the blog index, all to one page in Silentfrog, /tag/* to /blog in Framer. Categories that ranked deserve a real target if the new site has category pages. Do not write a rule for a year folder such as /2021/*: it would swallow every dated post beneath it.

Getting the complete list, and crawling the new site

The old list comes from WordPress’s sitemap index (/wp-sitemap.xml, or /sitemap_index.xml with Yoast or Rank Math), the Search Console pages export, and the redirect table of the plugin the site used, whose sources belong in the url list so they are resolved against the new site directly (finding the urls nothing links to).

For the new side, crawl the Framer site on the free subdomain it publishes to before the custom domain moves. A published Framer page is server-rendered html with its links and its h1 in the markup, which is what the crawler reads; on framer.com the pages also carry a canonical tag.

Doing it in one pass

  • Export the WordPress plugin’s redirects and the Search Console pages report while the old site is up.
  • Start a run with the WordPress domain and the Framer subdomain; paste the extra urls into the url list (starting a run).
  • Add directory rules for folders that moved as a whole and for tag and author archives; review needs review and verify what you accept.
  • Download the redirects file with plain path pairs picked. Delete the rows a folder rule covers if you will type that rule into Framer instead.
  • Import the file with Redirect Sync, add the wildcard rules in site settings below the exact ones, and publish.
  • After the domain moves, crawl the old url list against the live site: one redirect, then 200.
export

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.

the export: plain path pairs is the from,to file Redirect Sync reads.

The first 50 pages of the old site are free and need no signup, which is enough to see how the matcher pairs your posts before you decide anything.

In short

  • Framer keeps redirects under site settings, Hosting, Redirects, on the Pro plan or Enterprise, applied in list order.
  • Wildcards are * with :1, :2 in the target; named segments match one segment each.
  • Redirect Sync imports a from,to csv, which is exactly Silentfrog's plain path pairs export.
  • Unchanged slugs need nothing; posts under a date are one row each; folders and archives are a hand-typed wildcard each.
  • Check one slashed old url and the status code after the first publish.