WoluTools
← About this tool

seo · Browser tool

Redirect Rule Generator

Paste old and new URLs, get the matching rules for Apache, nginx, Netlify, Vercel or Cloudflare — with the loops and chains flagged before you ship them.

Runs in your browserNothing is uploadedHow it works
Free toolNo account · no row limitFree, unlimitedRuns offline once the page has loaded.

Old and new URLs

Options

Status code
Query string

Checks

SeverityWhereWhat was found

Generated rules

What this does

Each line is split into an old URL and a new one, the pairs are checked against each other, and the result is written out in the syntax of whichever host or server you choose. Everything happens in the page; the URLs are never sent anywhere, which also means the tool cannot tell you whether a target actually exists.

Why chains matter

A chain is /a pointing at /b while /b points at /c. The visitor still arrives, after two round trips instead of one, and every hop costs a request. Search engines follow a limited number of hops before giving up, and link equity is diluted at each step. The fix is to point /a straight at /c and keep the /b rule for anyone who has the middle URL bookmarked. The Flatten button rewrites the list that way.

Why loops are worse

A loop — /a to /b and /b back to /a — never resolves. The browser follows the bounce about twenty times and then shows too many redirects. The page is gone as far as every visitor and crawler is concerned, and because the server returns a redirect rather than an error, uptime monitoring usually stays green. That combination is why loops survive in production for weeks.

Regex characters in paths

Apache matches with a regular expression, so a path like /info.php written literally also matches /infoXphp, and /help? makes the p optional. Characters with a meaning in regex are escaped before the Apache rules are written. The other four formats match literally — nginx location =, Netlify, Vercel source and Cloudflare bulk redirects all compare the path as text — so no escaping is applied there, and adding backslashes would break them.

Query strings are handled differently by each host

Apache appends the incoming query string to the target unless the rule carries QSD. nginx drops it unless you add $is_args$args. Netlify and Vercel forward it by default. Cloudflare has a per-rule switch. The checkbox above sets the right thing in each output. Where an old URL carries its own query string, the rule has to match on that too: Apache gets a RewriteCond, nginx a map on $request_uri, Vercel a has clause, and Netlify takes the parameter as a second field.

What the checks do not cover

Rules are compared against each other, not against your site. A redirect to a page that 404s looks fine here. Wildcard and pattern rules you already have on the server are invisible to this tool, so a new exact rule may still be shadowed by an existing catch-all. Test on a staging host before deploying a large batch.