If a redirect that used to work on your WordPress site — forcing https://, redirecting www to non-www (or the reverse), or sending an old URL somewhere new — has stopped working, and you set it up as a Cloudflare Page Rule some time ago, check how it interacts with Cloudflare's newer Rules products. Page Rules are deprecated (opens in a new tab) and Cloudflare plans to migrate them automatically; in the meantime, a newer rule on the same URLs takes precedence over the Page Rule. The durable fix is finding your old rule's exact settings and rebuilding the same behavior as a Redirect Rule (Single Redirect).
Symptoms
- A redirect that previously worked (forcing HTTPS, www/non-www redirect, or an old-URL-to-new-URL redirect) no longer happens — visitors land on the un-redirected version of the page instead.
- In the Cloudflare dashboard, Rules → Page Rules still lists your rule, marked as deprecated, but the redirect no longer fires.
- Changes to the Page Rule don't seem to take effect, because another rule matches the same URLs first.
- The break coincided with no change on your own WordPress site or hosting — nothing was touched on the server side.
Likely causes, in order of how often they actually happen
- A newer Rules product matches the same URLs. Modern Rules features take precedence over Page Rules (opens in a new tab), so a Redirect Rule, Configuration Rule or Cache Rule that you, a teammate or an automatic migration added for the same pattern wins over the old Page Rule.
- A Worker now runs on the route. Cloudflare notes that requests handled by Workers suppress Page Rules actions (opens in a new tab), but not the newer Rules — so a Worker added later can silently disable a Page Rule redirect.
- You ran out of Page Rules. The Free plan allows 3 Page Rules (opens in a new tab), so a redirect you meant to add as a fourth rule never existed. New redirects belong in Redirect Rules (10 on the Free plan) instead.
- Several Page Rules overlap. Only the highest-priority matching Page Rule takes effect (opens in a new tab), so a broader rule above your redirect can stop it from ever running.
Fix it: lowest-risk steps first
Step 1 — Find and document your existing Page Rule exactly
Go to Rules → Page Rules in the Cloudflare dashboard. For each rule listed, note down:
- The exact URL match pattern (for example,
http://yourdomain.com/*orwww.yourdomain.com/*). - The setting/action applied (for example, "Forwarding URL (301/302)" with a specific destination pattern, or "Always Use HTTPS").
- The order/priority of the rule if you have more than one, since Page Rules were evaluated top to bottom and the new products have their own separate ordering.
Do not delete the old rule yet — leave it in place until its replacement is confirmed working, since it may still be partially functioning for some traffic patterns.
Step 2 — Recreate an HTTPS redirect with the built-in toggle or a template
If your old Page Rule was just forcing HTTPS (matching http://yourdomain.com/ (opens in a new tab)* and forwarding to the https:// version), you don't need a custom rule at all: turn on Always Use HTTPS under SSL/TLS → Edge Certificates, or create a Redirect Rule from the Redirect from HTTP to HTTPS template, which is Cloudflare's recommended replacement (opens in a new tab).
Step 3 — Recreate a www ↔ non-www redirect using Redirect Rules
For a domain-level redirect (for example, www.yourdomain.com → yourdomain.com, or the reverse), go to Rules → Redirect Rules and click Create rule.
- Start from Cloudflare's www-to-root example (opens in a new tab), or under When incoming requests match, choose a custom filter expression matching Hostname equals www.yourdomain.com (opens in a new tab) (adjust to your actual redirect direction).
- Under Then, set Type to Static or Dynamic depending on whether the destination is fixed or needs to preserve the original path — for a full-site www-to-non-www redirect preserving the path, choose Dynamic and set the expression to
concat("https://yourdomain.com", http.request.uri.path). - Set the Status code to 301 (permanent) to match typical Page Rule behavior, unless your original rule used 302.
- Save and deploy the rule.
- Test by visiting the
wwwversion of a few different URLs on your site (not just the homepage) and confirming each redirects to the correct non-www equivalent with the path intact.
Step 4 — Recreate a specific old-URL-to-new-URL redirect
If the original Page Rule redirected a specific old path (for example, an old blog URL) to a new one, use Rules → Redirect Rules again:
- Match condition: URI Path
equalsthe old path (e.g.,/old-post-url/). - Action: Static redirect to the new full destination URL.
- Status code: 301.
- Deploy, then test the old URL directly to confirm it lands on the new page.
Step 5 — Remove the legacy Page Rule once the replacement is verified
Once you've confirmed the new Redirect Rule (or the Always Use HTTPS toggle) produces the exact same behavior across a few test URLs, go back to Rules → Page Rules and delete the old rule. Leaving both in place makes future troubleshooting confusing, and the Page Rule will be migrated or retired eventually anyway.
Verify the fix
- Test each redirect scenario (HTTP→HTTPS, www↔non-www, old URL→new URL) in a private/incognito browser window to avoid cached redirect results.
- Confirm the redirect uses the correct status code (301 for permanent) using your browser's developer tools Network tab or an online redirect checker.
- Test at least two or three different URL paths, not just the homepage, to confirm path-preserving redirects (like the www Dynamic rule) work sitewide.
- Recheck Rules → Page Rules to confirm the old legacy rule has been removed once you're confident the new rule is working correctly.
If you need to roll back
If the new Redirect Rule doesn't behave as expected, go to Rules → Redirect Rules, disable or delete the new rule, and your original (legacy) Page Rule — if you haven't deleted it yet — will resume being the only active rule for that pattern. This is why Step 5 says to wait until you've verified the replacement before removing the old one: it acts as your rollback path during testing.
Related fixes
- Cloudflare + WordPress: The Complete Setup Guide — For the full guide to SSL mode, caching, and security settings that prevent issues like this.
- WordPress Redirect Loop After Adding Cloudflare on aaPanel — For a redirect loop specifically on an aaPanel-hosted site.
- Fix Cloudflare Blocking Your WordPress REST API — For a different kind of Cloudflare rule breaking WordPress functionality.
FAQ
Do I need to migrate every old Page Rule, or only the ones that broke?
Only migrate rules that have stopped working or that you need to change. Working Page Rules can be left alone for now: Cloudflare says it will migrate them automatically, with advance notice (opens in a new tab), though migrating proactively avoids surprises.
Why does the new Redirect Rule need a "Dynamic" expression instead of just a destination URL?
A "Static" redirect sends every matching request to one fixed URL, which breaks path-preserving redirects (like www-to-non-www across an entire site with many pages). "Dynamic" lets you build the destination from parts of the original request, such as http.request.uri.path, so www.yourdomain.com/about correctly redirects to yourdomain.com/about instead of everything landing on the homepage.
Will this affect my Cloudflare plan's rule limits?
Redirect Rules have their own quota, separate from Page Rules: 10 on the Free plan, 25 on Pro and 50 on Business (opens in a new tab), compared with 3, 20 and 50 Page Rules. Check your plan's current limit before building out many rules.
Every guide explains the symptom, likely causes, the safest order of checks and how to confirm the fix. How we check our guides.



