I am running a test copy of WordPress on my computer, and trying to create a custom 404 error page.
When I try to test it at http://mywebsite.localhost/some_crazy_url_that_does_not_exist
...instead of seeing the error page, I see the WordPress home page that I would see at http://mywebsite.localhost/
However, if I enter http://mywebsite.localhost/index.php?error=404, then I see the correct error page. So obviously it is there. I have even added "ErrorDocument 404 /index.php?error=404" as the first line of my .htaccess file, but it doesn't help.