Why Does My WooCommerce Checkout Redirect in a Loop?

Why a WooCommerce Checkout Loops

Several different systems can legitimately want to redirect a checkout request — WordPress's own canonical URL handling, an SSL-enforcement rule forcing HTTPS, a caching plugin's URL rewriting, or a security plugin's own redirect rules for suspicious-looking requests. When two of these disagree about where the request should ultimately land, the browser can end up bouncing between them indefinitely rather than settling on a final page.

Common Causes of a Checkout Redirect Loop

  • An SSL/HTTPS enforcement rule conflicting with WooCommerce's own "Force HTTPS on checkout" setting, each redirecting to a slightly different variant of the URL and disagreeing with the other.
  • A caching plugin's stale redirect rule left over from a domain change, an HTTP-to-HTTPS migration, or a permalink structure change that hasn't been cleared.
  • A security plugin misidentifying checkout traffic as suspicious and applying its own redirect/challenge logic in a way that loops back through the same check repeatedly.
  • WooCommerce's own checkout page setting pointing to an incorrect or duplicated page, confusing which URL is actually meant to serve as checkout.
  • A WordPress or WooCommerce update changing default URL handling behavior in a way that now conflicts with an existing, previously working custom rule.

How to Diagnose and Fix It

  1. Check the browser's network tab to see the exact chain of redirect URLs, which usually reveals which two rules are conflicting.
  2. Confirm WooCommerce → Settings → Advanced correctly identifies the checkout page, and that there's only one page assigned to that role.
  3. Clear all caching layers (page cache, CDN, browser) and retest, since a stale rule is a common and easily overlooked cause.
  4. Temporarily disable security/redirect-related plugins on staging to isolate which one is contributing to the loop.

Checkout completely unreachable and losing every order? See WooCommerce fixes for urgent diagnosis.

Reading the redirect chain

  1. Look at the actual chain. In the browser's Network tab with "Preserve log" on, load /checkout/ and read the status codes and Location headers. Alternatively run curl -IL on the checkout address. The loop usually alternates between two variants of the URL, such as http and https, or www and non-www.
  2. Compare WordPress Address and Site Address in Settings → General with the URL in the browser bar. A mismatch in scheme or in www makes WordPress's own canonical redirect fight the server's.
  3. If the site sits behind Cloudflare or another proxy, check its SSL mode. A "Flexible" mode combined with a server rule that forces HTTPS is a classic cause of an endless loop, because the origin only ever sees plain HTTP.
  4. Deactivate redirect, SSL and security plugins one at a time, testing checkout after each, until the loop stops.

Why checkout often shows it first

Checkout is commonly the one page with its own HTTPS rules, so a conflict that exists site-wide tends to surface there first. If the loop appears on other pages as well, treat it as a site-wide redirect problem rather than a WooCommerce one.

Available for new projects

NEXT STEP

Rather have it fixed than keep reading?

Based in Dhaka, Bangladesh — serving clients worldwide. Tell me what's happening and you'll have a reply within one working day.

  • Reply within one working day
  • Fixed quote before work starts
  • UK, EU and US hours covered