Which tool for which job

Cloudflare offers three distinct mechanisms, and choosing the wrong one is the most common source of friction:

  • Redirect Rules (free, in Rules > Redirect Rules): expression-based rules for pattern redirects, with dynamic target rewriting. Ideal for dozens to a few hundred patterns.
  • Bulk Redirects (in Rules > Bulk Redirects): a CSV-uploaded list of exact URL pairs, supporting tens of thousands of entries with optional regex matching. Made for one-to-one migration maps.
  • Transform Rules (in Rules > Transform Rules): rewrite the URL path or query on the fly without redirecting, so the browser URL stays the same. For backend path restructuring invisible to users.

Legacy Page Rules are deprecated: migrate any surviving Page Rules to these products before they surprise you mid-migration.

Executing a migration step by step

Step 1: extract and map the URLs. Export your current URLs (crawler, sitemap or analytics), map old to new, and prioritize pages with traffic and backlinks. A redirect map for 50 URLs is a spreadsheet; for 50,000 it is a Bulk Redirects list.

Step 2: choose the status code deliberately. Use 301 for permanent moves, 302 or 307 when the change may be reverted (campaigns, A/B tests). A wrong 301 is cached by browsers for months; do not guess.

Step 3: build the rules or the list. For a pattern like /blog/* moving to /articles/* while preserving the slug, a Redirect Rule with a dynamic expression does it in one line:

concat("https://www.example.com/articles", substring(http.request.uri.path, 5))

For thousands of one-off URLs, upload a CSV of source and target to a Bulk Redirects list, then reference the list from a Bulk Redirects rule. Decide per entry whether the query string is preserved; the default behavior differs from what most people expect, so verify it.

Step 4: test with curl before the cutover. Check status codes, target URLs and query-string preservation on a sample:

curl -sI "https://www.example.com/old-page?utm_source=news" | head -5

Step 5: watch for chains and loops. A redirect to a URL that redirects again (old domain to new domain to path rewrite) doubles latency and leaks PageRank. Flatten chains so every legacy URL lands on its final destination in one hop, and check the browser console for ERR_TOO_MANY_REDIRECTS after enabling rules that interact with SSL/TLS settings.

Common mistakes that hurt SEO and users

  • Redirecting everything to the homepage. Google treats it as a soft 404 and users bounce. Map old URLs to the closest new equivalent.
  • Redirect chains. A to B to C wastes a crawl budget slot and adds round trips on every visit. Consolidate to a single hop.
  • Losing query strings. Payment, tracking and search parameters disappear with a naive target; dynamic rewrites must explicitly preserve http.request.uri.query when needed.
  • Leaving 302s in place forever. Temporary codes do not consolidate ranking signals. If the move is permanent, the code must be 301.
  • Stacking conflicting rules. Redirect Rules evaluate in order and the first match wins; an overly broad wildcard early in the list silently swallows later, more precise rules.

Frequently asked questions

Do redirects work on a Free plan?

Yes. Redirect Rules and Bulk Redirects are included in the Free plan with generous limits (enough for most migrations), as are Transform Rules. Legacy Page Rules had hard limits; the current products scale much further without cost.

Will redirects slow down my site?

Cloudflare redirects execute at the edge, typically in a few milliseconds, and never reach your origin. The real latency risk is chained redirects: two or three hops add up. Keep one hop to the final URL and the overhead is invisible.

How many URLs can a Bulk Redirects list contain?

The lists are designed for large maps (tens of thousands of entries) uploaded as CSV. The practical limit is not the size but the hygiene of the list: deduplicate, drop URLs without traffic history, and keep the map versioned so future migrations stay auditable.

Can I rewrite URLs without redirecting?

Yes, that is the purpose of Transform Rules: the path or query is modified before the request reaches your origin, while the browser URL stays unchanged. Use it for restructuring backend paths without changing public URLs, not for SEO migrations where you want signals consolidated.

Planning a migration or a URL cleanup?

CF Garage designs the redirect map, builds the rules and lists, and validates every hop with you before the cutover. Fixed price, satisfaction guarantee.

View fixed pricing & order

Related topics