All 30 checks Page returns an error

Page returns an error

Updated

A page that answers with a 404, a 500 or another error status is treated by browsers, search engines and link previews as a page that is not there, even when the HTML that comes with it looks fine.

Fails: A page that loads but answers 404
HTTP/2 404
content-type: text/html; charset=utf-8

<h1>Welcome to Example Co.</h1>
Fix: The page answers 200
HTTP/2 200
content-type: text/html; charset=utf-8

Why the status code matters more than the page

The status code is the first thing a crawler or a link-preview bot reads, and it decides what happens next. Search engines drop pages that keep returning errors from their index. Chat apps and social networks skip building a preview card. Monitoring tools mark the site as down. A visitor can still see a well-designed page, which makes the problem hard to spot by eye, because a browser shows whatever HTML arrived along with the error.

A common cause during launch is a page that works in the editor but sits behind a password, a coming-soon plugin, or a hosting rule that answers 401, 403 or 503 to anyone who is not signed in. Another is a misconfigured single-page app that sends the right HTML but with 404 because the server does not know the route. Both look fine to the person who built the site and fail for everyone else.

How Skewcheck detects it

Skewcheck fetches the URL, follows up to five redirects, and reads the status code of the final response. Any status from 200 to 399 passes. Anything else, such as 404, 403, 410, 500 or 503, fails with high severity and removes 10 points from the score. Skewcheck judges only the status. It does not decide whether the page is the right one or whether its content is complete.

If the site cannot be reached at all, for example the connection is refused, the certificate is invalid, or it takes longer than twelve seconds to answer, there is no status to read, and the audit reports that the page could not be fetched instead of running the checks. Note that Skewcheck makes an anonymous request without cookies, so a page that only works for signed-in users will fail here, as it would for a search engine.

Read the status the way Skewcheck does
curl -sIL -o /dev/null -w '%{http_code} %{url_effective}\n' https://example.com/

Finding and fixing the cause

Start by running the command above on the exact URL you gave Skewcheck, and look at the final address as well as the code. A 404 on the home page usually means the domain points at a host that has no published site yet, or the site was published to a different domain. A 401 or 403 points at password protection, an IP allow list, or a bot rule at a CDN or firewall. A 5xx points at the application itself, so check the host's logs.

Make the page answer 200, or one redirect that ends on a page that does. If you do not want a page public yet, say so with a noindex tag and keep the status at 200 rather than returning an error. Once it is fixed, request an unknown path such as /this-page-does-not-exist and confirm your custom 404 page returns a 404 status, since a not-found page that answers 200 confuses search engines in the opposite direction.

Before and after

Before
$ curl -s -o /dev/null -w '%{http_code}\n' https://example.com/
503
After
$ curl -s -o /dev/null -w '%{http_code}\n' https://example.com/
200

Check your page

Run all 30 checks on any URL. Free, no account.