Technical
HTTP 404
Also called Not Found.
HTTP 404 is the status code for a URL the server cannot find. It says nothing about whether the page ever existed or will come back.
How it is measured
Filter the access log for status 404 and group by path. Then split by who asked: scanners probing `/wp-admin` and `/.env` are noise, while a person arriving from another site's link is a loss you can fix. `curl -I` confirms the code.
Check that the status really is 404. A soft 404 returns 200 with a not-found message in the body, and Search Console reports those separately.
Worked example
A WordPress blog's log shows 640 404s on a Monday. About 410 are bots hunting `/xmlrpc.php` and `/.git/config`. Ninety are `/blog/2019/old-post` from a magazine that linked there. The rest are favicon requests and typos.
A 301 from those 90 to `/archive/old-post` recovers around 60 visits a day from that single link.
How it differs
An HTTP 404 means not found, possibly for now. An HTTP 410 says the page is gone on purpose. Both return no page. The 404 leaves open that it could return, and the 410 says stop asking.
Common errors
Returning 200 on the error page. Redirecting every 404 to the homepage. Treating every 404 as a problem when most are scanner probes. Not logging the Referer on 404s. Returning 404 during a server outage. Breaking the error template so it becomes a 500.
In practice
Review the weekly top 404 paths along with their referrers, redirect the ones that have inbound links, and ignore the scanner noise. Make the error page useful with a search box and a link home, and confirm it returns 404, not 200.