I have a blog running the latest stable version of WordPress on a dedicated virtual server with the following situation. (Replace [caching plugin] with W3 Total Cache, Hyper Cache, or Quick Cache, as I've tried all three with the same results.)

  1. [caching plugin] is disabled. I visit a known bad link on my site (http://example.com/xyzz/) and receive a 404 error page. I can verify in Chrome's Inspector and/or Firebug that the "404 Not Found" status is being properly served in the HTTP headers.

  2. I turn [caching plugin] on and visit the same URL. On the initial visit I am served a cached page (verified by the debugging comments inserted by the plugin at the bottom of the HTML source) with the proper "404 Not Found" status in the HTTP header.

  3. If I visit the page again (http://example.com/xyzz/), I'm served the same cached page from #2 above displaying the "404 - Page Not Found" error to the user, but with a "200 OK" status in the HTTP header.

  4. If I turn [caching plugin] off and visit the page again, I am again being served an uncached page with the correct "404 Not Found" status in the HTTP header.

Any idea what might be going on here? This is seems to be causing some an issue where Google Bot is attempting to index some non-existent pages because its seeing the "200 OK" HTTP header instead of the proper 404.

2 Answers 2


W3 Total Cache has the following option that if enabled will cause this behavior:

Cache 404 (not found) pages

Reduce server load by caching 404 pages. If the disk enhanced method of disk caching is used, 404 pages will be returned with a 200 response code. Use at your own risk.

Other caching plugins may have similar functionality.

  • Hope this helps...seven years later! :-D Aug 1, 2018 at 22:27

Further troubleshooting leads me to believe this was somehow related to the theme I was using. After disabling it and enabling a different one I received the proper 404 headers while using a caching plugin.

I still don't know what in the theme would be causing this, but at least there's a workaround.

  • Can you leave with which theme it worked and with which theme it didn't? And please mark your answer as answer ;)
    – hakre
    Mar 24, 2011 at 7:45
  • Sure. The one I was having problems with was Manifest, while the one that ended up working was Prose child theme for the Genesis Framework.
    – berberich
    Mar 27, 2011 at 21:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.