SHORT ANSWER
A wildcard redirect is one rule that matches a whole folder and carries the rest of the path over to the target. Webflow writes it as /blog/(.*) to /magazin/%1, Apache, nginx and the WordPress plugins as a regular expression with $1, Squarespace with a [name] variable, and Shopify has no wildcards at all. A wildcard is the right tool when a folder moved and its slugs stayed the same; when slugs changed or a section was split, one-to-one rows are the better map.
The syntax per platform
The same move — every post under /blog/ to the same slug under /magazin/ — on each platform:
| platform | wildcard rule | captured part | which rule wins |
|---|---|---|---|
| Webflow | /blog/(.*) → /magazin/%1 | %1, %2 … | first match in list order |
| Apache Redirect | Redirect 301 /blog /magazin | rest of path appended | first match in file order |
| Apache RedirectMatch | RedirectMatch 301 ^/blog/(.*)$ /magazin/$1 | $1, $2 … | first match in file order |
| nginx | rewrite ^/blog/(.*)$ /magazin/$1 permanent; | $1, $2 … | exact locations first, then regex in order |
| WordPress · Redirection | ^/blog/(.*)$ → /magazin/$1, regex on | $1, $2 … | by position in the group |
| WordPress · Yoast, Rank Math | a regex-type redirect, same pattern | $1, $2 … | check the plugin's own list |
| Squarespace | /blog/[name] -> /magazin/[name] 301 | [name] | top to bottom |
| Shopify | none | — | exact rows only |
Everything on this page was checked against each platform’s own documentation in october 2026; the sources are linked in each section.
Webflow: (.*) and %1
Webflow’s redirect settings use a capture group in the old path and a numbered placeholder in the target: (.*) captures, %1 puts the first capture back, %2 the second. /blogs/(.*)/(.*) to /articles/%1/%2 keeps two levels. It looks like a regular expression but is a notation of its own, with its own escape: the help page lists % - & * ( ) = _ + ? as characters that take a % in front in an old path with capture groups. A folder called /old-blog is written /old%-blog/(.*); the redirect path stays unescaped, /new-blog/%1. Silentfrog’s Webflow export does this for every wildcard row.
Webflow applies the first matching rule, so specific rows go above a wildcard that would otherwise catch them. And the capture group is generally described as matching up to the next slash, not across it — test a nested url such as /blog/2019/post after import before trusting a single (.*) with a deep tree (importing into Webflow).
Apache: Redirect, RedirectMatch and mod_rewrite
Apache’s mod_alias documentation describes two directives that behave very differently:
Redirect — prefix matching on whole path segments, and the rest of the path is appended to the target. Redirect 301 /blog /magazin is already a wildcard: /blog/post goes to /magazin/post. That is convenient for a folder move and a trap for exact rows, because Redirect 301 /blog /magazin listed above Redirect 301 /blog/pricing-guide /pricing catches the second url too.
RedirectMatch — a regular expression, with captures as $1, $2. Anchored with ^ and $ it matches exactly one path and nothing longer.
# exact rows first, the folder rule last — the first match wins RedirectMatch 301 ^/blog/pricing-guide/?$ /pricing RedirectMatch 301 ^/blog/?$ /magazin RedirectMatch 301 ^/blog/(.*)$ /magazin/$1 # case-insensitive, for an old site with mixed-case urls RedirectMatch 301 (?i)^/Downloads/(.*)$ /files/$1
Both directives work on the path; the query string is passed through to the target. For anything that depends on the query, or on a condition such as the host, mod_rewrite with RewriteCond is the tool. The full conversion from a csv is in csv to .htaccess or nginx.
nginx: rewrite, return and map
# a folder move in the server block
location = /blog/pricing-guide { return 301 /pricing; }
location = /blog { return 301 /magazin; }
location ^~ /blog/ {
rewrite ^/blog/(.*)$ /magazin/$1 permanent;
}location = is an exact match and is checked before anything else, so exact rows here do not depend on their order. permanent makes rewrite answer 301. For long lists, a map from $uri to the target is the idiom; per the map module documentation plain string keys are matched ignoring case, keys starting with ~ are case-sensitive regular expressions, ~* case-insensitive ones, and regular expressions are tried in file order after the exact strings.
WordPress plugins: regex with $1
The Redirection plugin matches plain paths by default; ticking regex on a redirect turns its source into a regular expression. Its regex documentation uses /oldpage/(.*) to /newpage/$1 and makes two points worth repeating: start the pattern with ^, which stops it matching elsewhere in the url and prevents an infinite redirect, and match the whole url, because the plugin replaces only the matched part and appends whatever was not matched. Its url matching options also offer ignore case and ignore trailing slashes.
Yoast SEO Premium and Rank Math PRO have a regex type per redirect as well; in their csv imports it is a column, regex in Yoast’s Format, regex in Rank Math’s matching (importing into WordPress).
Squarespace has [name], Shopify has nothing
Squarespace — url mappings are lines of the form /old -> /new 301, applied top to bottom. The help page documents one variable, [name]: /blog/[name] -> /posts/[name] 301 moves every post. No regex, no *, no query strings, and the capitalisation has to match the urls (importing into Squarespace).
Shopify — exact pairs only. The url redirect documentation describes no pattern syntax, a redirect only takes effect for a url that is broken on the store, the bare /products and /collections cannot be redirected, and neither can anything beginning with /cart, /shop, /services or a few other store prefixes. A folder move is one row per url.
Wix and HubSpot have pattern redirects of their own — group redirects in Wix, flexible pattern redirects in HubSpot — set up in their redirect managers; a plain path-pair import gives them one row per url (Wix, HubSpot).
Wildcard or one-to-one?
A wildcard does exactly one thing: it rewrites a prefix and keeps the rest. It is right when that is what the relaunch did, and wrong in every other case, where it produces confident redirects to pages that do not exist.
| situation | use | why |
|---|---|---|
| folder renamed, slugs kept | wildcard | one rule, also covers urls no crawl found |
| prefix dropped (/pages/about → /about) | wildcard | same: a pure prefix change |
| slugs rewritten or shortened | one-to-one | the captured part no longer exists on the new site |
| section split across several new ones | one-to-one | no single prefix describes where pages went |
| archives, tags, pagination with no equivalent | wildcard to one page | only where that page really serves those visitors |
| everything to the homepage | neither | Google may treat it as a soft 404 |
| mixed: most kept, some renamed | both | renamed rows first, the wildcard below them |
The mixed case is the common one, and it is where order matters: the renamed pages have to be listed before the wildcard on every platform that applies the first match, or the wildcard sends them to a slug that does not exist.
EXAMPLE
a blog of 400 posts moves from /blog/ to /magazin/. 370 keep their slug, 30 were rewritten during the relaunch. The map is 30 exact rows, then /blog to /magazin for the index page, then the wildcard. Without the 30 rows above it, the wildcard would send those posts to 30 urls that answer 404.
What a wildcard catches that you never saw
The selling point of a wildcard is coverage: /blog/(.*) also redirects the post that dropped out of the sitemap three years ago and the url someone mistyped in a backlink. That is real value — the urls nobody found are exactly the ones a row-by-row map misses.
The same coverage has a cost. The wildcard redirects everything under the folder, including urls that never existed: typos, scanners probing /blog/wp-login.php, old feeds. Each gets a 301 to a target that does not exist and then a 404, which is no worse for search than a direct 404 but is one more hop, and it hides real misses in your logs behind redirects. Keep the wildcard for folders whose slugs truly carried over, and look at the 404s on the new site in the weeks after launch: the ones that arrived through the wildcard tell you which slugs did not survive after all.
The mistakes wildcards make
- loops.
/(.*)to/en/%1matches its own target. Anchor the pattern and exclude the folder you redirect into, or list the other folders above it. - unanchored regex.
blog/(.*)without^also matches/archive/blog/x. Every regex rule starts with^. - the folder’s own page.
/blog/(.*)does not match/blog. The index page needs its own row. - unescaped dots. in a regex,
/pricing.htmlalso matches/pricingXhtml. Escape it as\.. - case. regex matching is case-sensitive unless told otherwise:
(?i)in Apache,~*in nginx, ignore case in Redirection (trailing slashes and case). - no check. a wildcard covers urls you never looked at. Request a few of them after import, including a nested one.
Writing it once for every platform
In Silentfrog a folder move is a directory rule: pick the old folder and the new one, choose keep sub-paths or all to one page, and the preview shows which targets do not exist on the new site before anything is exported. Tick export as wildcard rule and the redirects file writes it in the spelling the picked importer understands — (.*) and %1 for Webflow, an anchored regex with $1 for Redirection, Yoast, Rank Math, Apache and nginx, [name] for Squarespace. The rows below the folder are then left out of the file, because the wildcard covers them, while the folder’s own index page keeps its row. For Shopify and plain pairs, which have no wildcards, the same rule is written out as one row per url the crawl found.
For the mixed case — most slugs kept, a few renamed — the preview is the check: the renamed pages show up as targets that do not exist. Either leave export as wildcard rule unticked, fix those rows in the target picker and export row by row, or keep the wildcard and add the renamed pages to the file by hand, above the wildcard row on an importer where the first match wins.
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.
Try it on your own folders — the first 50 pages of the old site are free.
In short
- Webflow: /old/(.*) → /new/%1. Apache, nginx, WordPress plugins: ^/old/(.*)$ → /new/$1. Squarespace: [name]. Shopify: none.
- Apache's plain Redirect is already a prefix wildcard; RedirectMatch with anchors is safer for exact rows.
- Specific rows above the wildcard wherever the first match wins.
- A wildcard only fits when the slugs stayed the same; renamed or split sections need one-to-one rows.
- Anchor every regex, escape dots, give the folder's index page its own row, and test a nested url.