Robert_Charlton - 8:31 pm on May 2, 2013 (gmt 0)
I see that almost all the non-existent pages in my website returns 200 response when they are supposed to return 404
shaunm - As I remember, on one question you posted a while back, it turned out that you were running a CMS on IIS. It's unfortunately fairly standard procedure in IIS to set up custom error pages improperly, where the error is 302 redirected to a custom error page that returns a 200 OK.
With this kind of arrangement, certain types of errors can theoretically return an infinite number of 200 responses for non-existent urls. Google never sees the proper 404 response. The problem is so common that Google has figured out a way to detect it, at least to the degree of returning "soft 404s" . IMO, it's a problem that should be fixed in your server setup.
On some IIS/.NET CMS systems I've seen (shudder), the documentation and interface check boxes are so confusing, though, that it's truly not clearly what's going on, or what header response to expect. (And a further confusion... some of these CMS systems also use dynamically generated canonical tags, thinking that this will address all problems.)
For more detail on at least the tip of the iceberg, take a look at this thread, which might get you started on fixing it...
Custom Error Pages - Beware the Server Header Status Code