Rule site.soft-404
Pages return 200 but say "not found"
site.soft-404 is a check in Crawlmind's site audit that grades medium-impact issues of this kind. This page explains why the rule matters and the exact fix.
Why it matters
A soft 404 is a page that returns HTTP 200 (success) but whose content tells the visitor the resource is missing: the classic not-found headline, "Article deleted", "Sorry, we couldn't find what you were looking for." Search engines penalise these because they fragment the index with non-content URLs and waste crawl budget. AI engines see them as low-quality and either skip them or cite their misleading title as if it were real content.
The fix
A real "not found" response:
```http
HTTP/2 404
content-type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>Page not found</h1>...</body></html>
```
A soft 404 (the bug):
```http
HTTP/2 200
content-type: text/html; charset=utf-8
<!DOCTYPE html>
<html><body><h1>Page not found</h1>...</body></html>
```
Fix at the framework level. In Next.js:
```ts
// pages/[slug].tsx
export async function getStaticProps({ params }) {
const post = await fetchPost(params.slug);
if (!post) return { notFound: true }; // emits a real 404
return { props: { post } };
}
```
In Nuxt:
```ts
const { data: post } = await useFetch(`/api/posts/${slug}`);
if (!post.value) throw createError({ statusCode: 404, statusMessage: 'Post not found' });
```
Validate via Google Search Console (Crawl > Stats > Soft 404 report).