SEO

seo/http-status

Missing pages return 404 or 410, moved pages 301 or 308, and a client-rendered error view is not served with 200.

moderatebrowserfe-seo-metadata

Why

A "Page not found" view returned with status 200 is a soft 404: search engines may index the error page or keep a dead URL in results. Temporary redirects for permanent moves split ranking signals between the old and new URL.

Fix

Return the real status from the server or the framework (Next.js notFound(), Nuxt createError({ statusCode: 404 }), SvelteKit error(404), Astro return new Response(null, { status: 404 })). In a client-only app, redirect unknown routes to a URL the server answers with 404, or add <meta name="robots" content="noindex"> to the error view. Use 301 or 308 for permanent moves.

Examples

// Next.js App Router
import { notFound } from 'next/navigation'
if (!product) notFound()

Sources

Facts

Id
seo/http-status
Severity
moderate
Check
browser needs a rendered page: audit --url
Applies to
page
Same problem in
Lighthouse http-status-code
Taught by the skill
fe-seo-metadata SEO and metadata
Since version
0.1.0

Rule file on GitHub

Read it in the terminal

npx github:dawidolko/frontend-skills explain seo/http-status