technical
Servir un 404 real, no un soft-404
MetricSpot demana una URL aleatòria inexistent i comprova l'estat. Els soft-404 (200 OK en una pàgina de 'no trobat') inflen l'índex amb URL escombraries i confonen els rastrejadors.
Què comprova aquesta auditoria
Fa una petició a una URL aleatòria del teu domini que gairebé segur que no existeix (alguna cosa com /__metricspot_probe_${random}). La comprovació falla quan:
- El servidor retorna
200 OKamb una pàgina de “no trobat” (un soft 404, el pitjor cas). - El servidor retorna
5xxen lloc de404. - El servidor retorna
200amb una redirecció a la pàgina d’inici (també és un soft 404 als ulls de Google).
Passa quan el servidor retorna un 404 real (o 410 Gone) amb una pàgina d’error útil.
Per què importa
Els soft 404 confonen els rastrejadors i corrompen el teu índex.
- Inflament de l’índex. Google indexa una pàgina soft-404 com qualsevol pàgina 200 normal. Un lloc amb un CMS amb errors que retorna 200 per a typos pot acabar amb milers d’URL escombraries a l’índex.
- Pressupost de rastreig malgastat. Googlebot torna a visitar URL soft-404 buscant contingut nou, consumint el pressupost de rastreig de pàgines reals.
- Errors a Search Console. Search Console acabarà marcant les pàgines soft-404 com a errors
Soft 404i deixarà d’indexar-les, però la neteja triga setmanes. - UX. Una pàgina 404 real pot suggerir contingut relacionat, dirigir els usuaris a la cerca i recuperar la visita. Una redirecció 200 a la pàgina d’inici els deixa abandonats sense cap senyal que la URL original estava trencada.
Com solucionar-ho
Configura el servidor perquè retorni 404 Not Found per a rutes desconegudes i renderitza una pàgina útil al damunt.
nginx, defineix una pàgina d’error personalitzada que segueixi retornant 404:
server {
error_page 404 /404.html;
location = /404.html {
internal;
}
}
Apache (.htaccess):
ErrorDocument 404 /404.html
Next.js (App Router):
// app/not-found.tsx
export default function NotFound() {
return (
<main>
<h1>404, pàgina no trobada</h1>
<p>Prova la <a href="/">pàgina d'inici</a> o la <a href="/search/">cerca</a>.</p>
</main>
);
}
Next.js serveix això automàticament amb un codi d’estat 404.
Astro:
---
// src/pages/404.astro
---
<html>
<head><title>404, no trobat</title></head>
<body>
<h1>404, pàgina no trobada</h1>
<a href="/">Tornar a l'inici</a>
</body>
</html>
Astro construeix això com un 404.html estàtic que nginx serveix amb el codi d’estat correcte automàticament.
WordPress, els temes inclouen una plantilla 404.php. Si la teva redirigeix a l’inici en comptes de retornar 404, busca a functions.php algun wp_redirect() mal orientat i elimina’l.
Fes la pàgina útil. Un 404 real hauria de:
- Ser honest, el títol diu “Pàgina no trobada”, no “Benvingut de nou.”
- Suggerir 3 o 4 pàgines populars (el menú general no compta, ofereix enllaços específics).
- Incloure cerca si en tens.
- Mantenir la marca del lloc perquè l’usuari sàpiga que segueix al teu lloc.
Audita el teu cas:
curl -sI https://elteudomini.com/__definitely_does_not_exist
La primera línia ha de ser HTTP/1.1 404 Not Found (o HTTP/2 404). Qualsevol altra cosa falla la comprovació.
Preguntes freqüents
Haig de redirigir els 404 a la pàgina d’inici?
No. Un 301 cap a inici diu a Google “aquesta URL s’ha mogut a /”, que és mentida. L’usuari veu la pàgina d’inici i no sap que la seva URL original era errònia; la URL queda “indexada” com a duplicat de l’inici. Retorna sempre un 404 real.
Quina és la diferència entre 404 i 410?
404 Not Found significa “ara mateix no podem trobar aquest recurs.” 410 Gone significa “aquest recurs existia però s’ha eliminat permanentment.” Google elimina les URL 410 de l’índex més ràpidament que les 404. Fes servir 410 per a contingut que has eliminat deliberadament; 404 està bé per a typos i bots que sondegen vulnerabilitats.
La meva pàgina 404 retorna 200, com ho soluciono?
Dues causes habituals: (1) el teu CMS fa servir una ruta comodí que ho captura tot, inclosos els 404, i els serveix amb 200; (2) el teu CDN ha guardat en caché una resposta trencada inicial amb estat 200. Per al (1), assigna explícitament res.status(404) al gestor de “no trobat” del teu framework. Per al (2), purga la caché del CDN i verifica directament contra l’origen.
Fonts
Última actualització 2026-05-11