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-metadataSEO and metadata- Since version
- 0.1.0
Read it in the terminal
npx github:dawidolko/frontend-skills explain seo/http-status