A soft 404 az az eset, amikor egy nem létező, törölt vagy üres oldal 200 OK státuszkóddal válaszol, miközben a tartalma azt mondja: „Nincs ilyen oldal.” A gép számára ilyenkor az oldal létezik és érvényes, az emberi olvasó viszont egy hibaüzenetet lát.
Hogyan működik
Minden kérésre két válasz érkezik: egy státuszkód a fejlécben és egy HTML a törzsben. A böngésző a HTML-t mutatja, a robotok viszont először a státuszkódot nézik. Ha a kód 200, a keresőrobot érvényes oldalként kezeli, feltérképezi és jelölteti indexelésre.
A soft 404 tehát nem vizuális hiba, hanem fejléc-hiba. A látogató jól tájékozódik, a gép viszont rosszul.
Honnan származik a legtöbb ilyen oldal
A riportokban négy forrás ismétlődik újra és újra:
- törölt termék vagy blogbejegyzés, amit a rendszer nem 404-gyel zár le
- plugin vagy beállítás, ami minden hibás URL-t a főoldalra küld
- JavaScript-alapú útvonalkezelés, ahol a szerver mindig 200-at ad
- üres kereső- vagy szűrőtalálat „nincs találat” szöveggel
Miért számít a generatív keresőknek
Az AI-válaszokat adó rendszerek ugyanazokat a HTTP-jeleket használják, mint a klasszikus robotok. Egy 200-as hibaoldal bekerülhet a forrásindexbe, és üres, tartalom nélküli oldalként gyengíti a domain megítélését. Ennél rosszabb, ha idézhető forrásként jelenik meg: ilyenkor a modell egy hibaüzenetet dolgoz fel a szolgáltatásod helyett.
Röviden: ha az oldal nincs meg, mondja ezt a státuszkód is, ne csak a szöveg.
Miért fontos
SEO-hatás
A keresőrobotoknak véges ideje van az oldaladra. Minden 200-as hibaoldal elvesz ebből a keretből, és a valódi termék- vagy szolgáltatásoldalak helyett kerül sorra. A Search Console Oldalak indexelése riportjában az ilyen címek „Soft 404” okkal kimaradnak, de a feltérképezésük addigra megtörtént.
Ha sok hibaoldal ugyanazt a szöveget mutatja, duplikációs problémát is kapsz. A duplikált tartalom és a vékony tartalom jelzés ilyenkor teljesen jogos: tényleg több száz egyforma, üres oldal van kint.
Üzleti hatás
A legdrágább eset a webshopoknál jön elő. Kifutott termék, 200-as válasz, a Google hónapokig kint tartja a címet, a vásárló pedig egy üres lapra érkezik hirdetésből vagy találatból. Ez elköltött kattintás, nulla bevétellel.
Mit néz ebből a riport
Az audit egy biztosan nem létező URL-t kér le a domainről, és megnézi a válasz státuszkódját. Ha 200 érkezik 404 helyett, a szabály közepes hatású hibaként jelenik meg, kód hatókörrel. Az ajánlás egyszerű: a nem létező oldalak 404-es státuszt adjanak, ne 200-as soft 404-et.
Technikai példa
Parancssori ellenőrzés. A válasz első sora árulja el az igazságot:
curl -s -o /dev/null -w "%{http_code}\n" https://pelda.hu/nincs-ilyen-oldal-98765
# helyes: 404
# soft 404: 200
Ha átirányítást gyanítasz, kövesd végig a láncot:
curl -sIL https://pelda.hu/torolt-termek | grep -E "^HTTP|^location"
Szerveroldalon a státuszt a sablon kiírása előtt kell beállítani:
$termek = $repo->find($slug);
if (!$termek) {
http_response_code(404);
include __DIR__ . '/templates/404.php';
exit;
}
A lényeg a sorrend: a http_response_code(404) hívásnak meg kell előznie minden kimenetet, különben a fejléc már elment 200-zal.
Gyakori kérdések
Miért baj, ha a nem létező oldalak a főoldalra mennek?
Mert a keresők ezt is soft 404-nek minősítik, csak átirányítással megfejelve. A robot azt látja, hogy egy teljesen irreleváns cím a kezdőlap tartalmát adja vissza. Ez nem javít a helyzeten, viszont a főoldal jelzéseit zavarossá teszi. Célzott átirányítás akkor jó, ha van valódi utódoldal.
Mikor válasszak 301-et 404 helyett?
Akkor, ha a tartalomnak van értelmes utódja: átnevezett termék, összevont kategória, megújult szolgáltatásoldal. Ha nincs ilyen, a 404 vagy a 410 az őszinte válasz. A tömeges, ömlesztett átirányítás mindig rosszabb, mint a tiszta 404.
Hogy lehet, hogy a látogatóm hibaoldalt lát, az audit mégis hibát jelez?
Mert a kettő két különböző réteg. A látogató a HTML-t olvassa, a robot a HTTP-fejlécet. Soft 404-nél a szöveg rendben van, a státuszkód viszont 200. A javítás a szerveroldali státuszkód beállítása, nem a szöveg átírása.
Mennyi soft 404 még elfogadható?
Néhány cím a Search Console riportjában nem vészhelyzet, mert külső linkek és régi hivatkozások mindig keletkeznek. Ha viszont több tíz vagy több száz ilyen URL gyűlik össze, rendszerszintű beállítási hiba áll mögötte. A magyar KKV-oldalak többségén ez egyetlen plugin-kapcsolóra vagy egy hiányzó sablonfájlra vezethető vissza.
A JavaScript-alapú oldalakon hogyan oldható meg?
A státuszkódról a szervernek kell döntenie, mielőtt a kliens bármit renderelne. Szerveroldali renderelésnél a keretrendszer erre ad beépített eszközt. Tisztán kliensoldali alkalmazásnál előrenderelés vagy a szerver útvonaltáblája szükséges, különben minden cím 200-at kap.