Skip to content
Documentation
Rule catalogue

http.not-found

A URL that does not exist must answer 404 or 410

errorsite-widevendor-spec

Why it matters

Every other check reads a URL the site published, so none of them sees how it answers one it did not. goflag invents two paths, one bare and one ending in .txt, because frameworks route them differently: a middleware matcher that skips dotted paths is how /anything.txt reaches a page route while /anything 404s. A 200 there is a soft 404 — any invented URL becomes a page, and a client asking for /llms.txt or /feed.xml gets a home page it may take for the file. A 500 makes every mistyped link a server error, and Google slows its crawl of the whole site in proportion. The finding is attributed to the origin, not to the invented URL, so a fresh nonce on every run never makes it new.

What the finding looks like

The message goflag prints, with example values substituted.

error http.not-found Asked for a path that cannot exist, the origin did not answer 404 or 410: /goflag-probe-9f2c4e1a7b3d5f60812a4c6e8b0d2f41.txt answered 200 text/html (/goflag-probe-9f2c4e1a7b3d5f60812a4c6e8b0d2f41 answered 404, so only some unknown paths are affected). A 2xx for a page that does not exist is a soft 404: every invented URL becomes a page to crawl, and a client asking for a file the site does not have — /llms.txt, /feed.xml — gets a page it may take for that file.

How to fix it

The catalogue carries no snippet for a site rule: a cross-page rule builds its remedy from what the crawl found, so goflag attaches the fix to the finding itself rather than to the rule. Run it and read the finding.

Says who?

This rule is vendor-spec, and it cites the documents below. Nothing here is goflag’s opinion of what a good page looks like — if you disagree with a finding, this is what you are disagreeing with.