Sometimes WordPress is never reached. Your host, Cloudflare, the web server or a proxy in front of it answers with its own page instead, and some of those pages even come with a status that says all is well. This rule set recognises them, so you know where the problem sits: with the server, not with WordPress. On Checks & pages it shows as Hosting errors.
What WP Moo looks at
What the problems mean
What each priority means: Problem priority.
How to fix it
For your developer
The page rules are regular expressions on the first 512 KB of the decoded body, matched on the markup of each error page:
- Cloudflare: a
<title>with "| 5xx:", or thecf-error-detailsblock with "Error code 5xx" or acf-error-codespan of 5xx, 1000, 1001, 1004, 1016, 1018, 1023, 1033, 1101 or 1102. Cloudflare's block codes (1005 to 1012, 1015, 1020, 1106) are a block, not an outage: see Checker blocked. - PHP code: a body that starts with
<?php, after an optional byte order mark and whitespace. - Default pages: the
<title>of the Plesk, cPanel, nginx, OpenResty, Tengine, Caddy, IIS, lighttpd, Apache and distribution test pages, "This page was generated by Plesk", DirectAdmin's "Something amazing will be constructed here", the Nginx Proxy Manager and OpenLiteSpeed welcome text, and a body that starts with Apache's bare "It works!" or DirectAdmin's "Apache is functioning normally". - Suspended pages: a title that is just "Account Suspended" or says the domain is suspended, Plesk's "This domain is suspended" heading, and DirectAdmin's "This account has been suspended. Either the domain has been overused" text.
- Server and proxy errors: a 5xx
<title>with the server's own footer or heading (nginx, OpenResty, Tengine, Apache, LiteSpeed's 150px status heading, Varnish's "Guru Meditation", CloudLinux's "Resource Limit Is Reached"), a bare<center><h1>5xx …</h1></center>without a footer (load balancers, Cloudflare's plain pages), HAProxy's<html><body><h1>5xx, a plain-text body that is only "Bad Gateway", "Gateway Timeout", "Service Unavailable", "no available server" (Traefik), or "no healthy upstream" or "upstream connect error or disconnect/reset before headers." (Envoy), nginx's default "An error occurred." page, and IIS's "HTTP Error 503" page and its "50x - …" title with the "Server Error" heading. Caddy sends an empty body on errors, which fails on its status alone. - File listing: an "Index of /" title.
A default, suspended or server error page never loads WordPress's own files, so those three signatures don't count when a /wp-content/ or /wp-includes/ path follows them. That way a blog post that quotes one of these pages passes.
The certificate rule reads the TLS handshake of the first https hop and of the final response. It fails when the certificate is outside its validity dates or doesn't match the host name. A broken chain alone doesn't fail it; the SSL & certificate site check reports that.
Something unclear on this page? Email [email protected]