{"id":15702,"date":"2026-09-06T00:47:42","date_gmt":"2026-09-05T22:47:42","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/soft-404-error-page-checker\/"},"modified":"2026-09-06T00:47:42","modified_gmt":"2026-09-05T22:47:42","slug":"soft-404-error-page-checker","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/","title":{"rendered":"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt"},"content":{"rendered":"<div class=\"gtm-analyser-container\" style=\"background: var(--bg-panel, #1e1e24); padding: 25px; border-radius: 8px; border: 1px solid var(--border, #2a2a35);\">\n<p style=\"color: var(--text-secondary, #a0a0b0); margin-bottom: 20px;\">Jede Seite antwortet irgendetwas auf eine Adresse, die es nicht gibt, und was sie antwortet, entscheidet dar\u00fcber, ob ein kaputter Verweis jemals auff\u00e4llt. Ein 404 ist ein klares Nein. Ein 200 mit einer freundlichen Seite ist ein Ja, und Suchmaschinen behandeln es als Seite, die in den Index geh\u00f6rt. Diese Pr\u00fcfung fragt drei Adressen ab, die es nicht geben kann, und vergleicht jede Antwort mit einer Seite, die es gibt.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"fehl-url\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Adresse einer Seite, die es gibt<\/label><br \/>\n        <input id=\"fehl-url\" type=\"text\" value=\"https:\/\/www.lukaswojcik.com\/blog\/en\/toolbox\/\" class=\"form-control\" style=\"width: 100%; padding: 10px; background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); color: var(--text-primary, #e8e8ee); border-radius: 6px; box-sizing: border-box; font-family: monospace;\">\n    <\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.82rem; margin-bottom: 16px;\">Von diesem Server: eine Anfrage f\u00fcr die angegebene Seite und drei f\u00fcr zuf\u00e4llige Adressen auf demselben Host, jede mit 256-KB-Bremse. Es werden keine Cookies gesendet, keine Skripte ausgef\u00fchrt und nichts gespeichert au\u00dfer dem Z\u00e4hlerstand.<\/p>\n<p>    <button id=\"fehl-btn\" class=\"button\" style=\"background: var(--accent, #7ee787); color: var(--on-accent, #0b1114); border: none; padding: 12px 24px; border-radius: 6px; font-weight: 700; cursor: pointer;\">Fehlerseiten pr\u00fcfen<\/button><\/p>\n<div id=\"fehl-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<p style=\"color: var(--text-secondary, #a0a0b0); font-size: 0.8rem; margin: 24px 0 0;\">Grenzen, die zu kennen sich lohnt: Die drei Pr\u00fcfadressen sind zuf\u00e4llig, damit kein Zwischenspeicher sie aus einem fr\u00fcheren Besuch beantworten kann. Weiterleitungen werden festgehalten, aber nicht verfolgt \u2014 es z\u00e4hlt die erste Antwort, denn genau die notiert ein Crawler.<\/p>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"Jede Seite antwortet irgendetwas auf eine Adresse, die es nicht gibt, und was sie antwortet, entscheidet dar\u00fcber, ob ein kaputter Verweis jemals auff\u00e4llt. Ein 404 ist ein klares Nein. Ein 200 mit einer freundlichen Seite ist ein Ja, und Suchmaschinen behandeln es als Seite, die in den Index geh\u00f6rt. Diese Pr\u00fcfung fragt drei Adressen ab, die es nicht geben kann, und vergleicht jede Antwort mit einer Seite, die es gibt.\",\"label_url\":\"Adresse einer Seite, die es gibt\",\"datenschutz\":\"Von diesem Server: eine Anfrage f\u00fcr die angegebene Seite und drei f\u00fcr zuf\u00e4llige Adressen auf demselben Host, jede mit 256-KB-Bremse. Es werden keine Cookies gesendet, keine Skripte ausgef\u00fchrt und nichts gespeichert au\u00dfer dem Z\u00e4hlerstand.\",\"knopf\":\"Fehlerseiten pr\u00fcfen\",\"laeuft\":\"Adressen werden abgefragt, die es nicht gibt...\",\"grenze\":\"Grenzen, die zu kennen sich lohnt: Die drei Pr\u00fcfadressen sind zuf\u00e4llig, damit kein Zwischenspeicher sie aus einem fr\u00fcheren Besuch beantworten kann. Weiterleitungen werden festgehalten, aber nicht verfolgt \u2014 es z\u00e4hlt die erste Antwort, denn genau die notiert ein Crawler.\",\"h_proben\":\"Adressen, die es nicht gibt\",\"tabelle_hinweis\":\"\u00c4hnlichkeit vergleicht die W\u00f6rter der Antwort mit denen der Seite, die es gibt. Ein hoher Wert bei einem 404 hei\u00dft: richtiger Status, aber eine Seite, die wie Inhalt aussieht.\",\"h_befunde\":\"Befunde\",\"sp_art\":\"Form\",\"sp_adresse\":\"Adresse\",\"sp_status\":\"Status\",\"sp_ziel\":\"Weiter zu\",\"sp_groesse\":\"Gr\u00f6\u00dfe\",\"sp_aehnlich\":\"\u00c4hnlichkeit\",\"sp_noindex\":\"noindex\",\"art_ohne_endung\":\"ohne Endung\",\"art_mit_endung\":\".html\",\"art_verzeichnis\":\"Verzeichnis\",\"zeile_vergleich\":\"Verglichen mit\",\"zeile_vergleich_status\":\"Deren Status\",\"zeile_dauer\":\"Dauer\",\"zeile_limit\":\"Pr\u00fcfungen in dieser Stunde \u00fcbrig\",\"wert_fehlt\":\"keiner\",\"wert_ja\":\"ja\",\"wert_nein\":\"nein\",\"stufe_hoch\":\"Hoch\",\"stufe_mittel\":\"Mittel\",\"stufe_niedrig\":\"Niedrig\",\"stufe_info\":\"Hinweis\",\"stufe_gut\":\"In Ordnung\",\"keine_befunde\":\"Nichts zu melden.\",\"urteil_gut\":\"Adressen, die es nicht gibt, werden klar beantwortet.\",\"urteil_warnung\":\"Die Antwort ist verst\u00e4ndlich, aber nicht das, was ein Crawler erwartet.\",\"urteil_kritisch\":\"Eine fehlende Seite antwortet, als g\u00e4be es sie, oder der Server scheitert daran.\",\"fehler_kein_token\":\"Die Pr\u00fcfung lie\u00df sich nicht starten, weil reCAPTCHA nicht geladen hat.\",\"fehler_captcha\":\"reCAPTCHA hat die Anfrage als automatisiert eingestuft. Ein Neuladen der Seite hilft meist.\",\"fehler_zu_viele\":\"Das Limit von {limit} Pr\u00fcfungen je Stunde f\u00fcr diese Adresse ist erreicht.\",\"fehler_adresse\":\"Diese Adresse l\u00e4sst sich nicht verwenden.\",\"fehler_abruf\":\"Die Seite lie\u00df sich nicht abrufen.\",\"fehler_zaehler\":\"Der Z\u00e4hler ist nicht erreichbar, deshalb wurde nichts gepr\u00fcft.\",\"fehler_pruefdienst\":\"Der reCAPTCHA-Dienst war nicht erreichbar.\",\"fehler_aufbau\":\"Der Dienst ist nicht richtig eingerichtet. Der Fehler liegt auf dieser Seite.\",\"fehler_eingabe\":\"Die Anfrage lie\u00df sich nicht lesen.\",\"fehler_methode\":\"Falsche Anfragemethode.\",\"fehler_netz\":\"Der Dienst war nicht erreichbar.\",\"fehler_antwort\":\"Die Antwort lie\u00df sich nicht lesen.\",\"fehler_unbekannt\":\"Es ist etwas schiefgegangen, wof\u00fcr es keine eigene Meldung gibt.\",\"grund_leer\":\"Es wurde nichts eingegeben.\",\"grund_zu_lang\":\"Die Eingabe ist zu lang.\",\"grund_unlesbar\":\"Das ergibt keine Adresse.\",\"grund_schema\":\"Gepr\u00fcft werden nur http- und https-Adressen.\",\"grund_benutzerinfo\":\"Eingaben mit Zugangsdaten darin werden abgewiesen.\",\"grund_kein_punkt\":\"Der Hostname braucht mindestens einen Punkt.\",\"grund_hostform\":\"Erwartet wird ein Hostname, keine IP-Adresse.\",\"grund_port\":\"Gepr\u00fcft werden nur die Ports 80, 443, 8080 und 8443.\",\"grund_gesperrter_bereich\":\"Dieser Host l\u00f6st in ein privates oder reserviertes Netz auf. Solche werden nie abgerufen.\",\"grund_kein_dns\":\"Der Hostname l\u00f6st nicht auf.\",\"grund_abruf\":\"Die Adresse hat nicht geantwortet.\",\"grund_zu_viele_spruenge\":\"Die Adresse leitet zu oft weiter.\",\"befund_vergleichsseite_status\":\"Die zum Vergleich angegebene Seite antwortete mit Status {status} || Die drei Pr\u00fcfadressen wurden trotzdem abgefragt, aber die \u00c4hnlichkeitswerte vergleichen mit einer Seite, die selbst ein Fehler oder eine Weiterleitung ist.\",\"befund_probe_unerreichbar\":\"Die Form {art} lie\u00df sich nicht abfragen || Grund: {grund}. Diese eine Form bleibt unbekannt, die anderen z\u00e4hlen weiter.\",\"befund_soft_404\":\"Die Form {art} antwortet mit 200 || {url}, {aehnlich} % der W\u00f6rter decken sich mit der Seite, die es gibt. Eine fehlende Adresse, die mit 200 antwortet, ist ein Soft-404: Suchmaschinen k\u00f6nnen sie aufnehmen, und jeder Verweispr\u00fcfer meldet den Verweis als heil.\",\"befund_richtig_404\":\"Die Form {art} antwortet mit 404 || Das ist die klare Auskunft: Die Adresse gibt es nicht, und es bleibt nichts zu deuten.\",\"befund_gone\":\"Die Form {art} antwortet mit 410 || Gone ist eine st\u00e4rkere Aussage als 404: Die Adresse gab es, und sie kommt nicht wieder. Suchmaschinen r\u00e4umen solche Adressen schneller aus.\",\"befund_umleitung_startseite\":\"Die Form {art} leitet auf die Startseite || Status {status}. Damit wird aus jeder vertippten Adresse ein Besuch der Startseite, und ein Crawler notiert eine Weiterleitung statt einer fehlenden Seite. Ein 404 benennt die Lage, eine Weiterleitung verdeckt sie.\",\"befund_umleitung\":\"Die Form {art} leitet weiter || Status {status} nach {ziel}. Eine Weiterleitung f\u00fcr eine Adresse, die es nie gab, schickt den Crawler woandershin, statt die Frage zu beantworten.\",\"befund_serverfehler\":\"Die Form {art} antwortet mit Status {status} || An einer fehlenden Adresse sollte der Server nicht scheitern. Crawler drosseln bei 5xx-Antworten, und das trifft die ganze Seite, nicht nur diese Adresse.\",\"befund_gesperrt\":\"Die Form {art} antwortet mit Status {status} || Abgewiesen statt als fehlend gemeldet. Das ist vertretbar, sagt aber nichts dar\u00fcber, ob es die Adresse gibt.\",\"befund_unerwarteter_status\":\"Die Form {art} antwortet mit Status {status} || Weder ein klares Nein noch eine Weiterleitung. Crawler legen ungew\u00f6hnliche Codes vorsichtig aus und kommen unter Umst\u00e4nden wieder.\",\"befund_fehlerseite_wie_echte\":\"Die Fehlerseite der Form {art} gleicht der echten Seite zu {prozent} % || Der Status stimmt, Maschinen sehen den Unterschied also. Lesende m\u00f6glicherweise nicht: Die Seite wirkt wie Inhalt und nicht wie eine Auskunft.\",\"befund_fehlerseite_schwer\":\"Die Fehlerseite der Form {art} wiegt {kb} KB || Eine Auskunft, dass es hier nichts gibt, kostet so viel wie eine volle Seite. Crawler fragen sie oft ab, besonders nach einem Umbau.\",\"befund_fehlerseite_leer\":\"Die Fehlerseite der Form {art} hat nur {bytes} Bytes || Billig auszuliefern, aber sie sagt niemandem etwas, der einem falschen Verweis gefolgt ist. Eine Zeile mit einem Weg zur\u00fcck gen\u00fcgt.\",\"befund_fehlerseite_noindex\":\"Die Fehlerseite der Form {art} tr\u00e4gt noindex || G\u00fcrtel und Hosentr\u00e4ger neben dem Statuscode. Nicht n\u00f6tig, schadet aber nicht.\",\"befund_uneinheitlich\":\"Die drei Formen antworten verschieden: {stati} || Eine Regel f\u00fcr .html, eine f\u00fcr Verzeichnisse und ein Auffangnetz f\u00fcr den Rest \u2014 so entsteht die L\u00fccke. Ob es eine Adresse gibt, sollte nicht von der Form des Pfades abh\u00e4ngen.\",\"befund_einheitlich_404\":\"Alle drei Formen antworten mit {status} || Dieselbe klare Auskunft, unabh\u00e4ngig von der Form der Adresse.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-fehlcheck.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';\n    var STUFEN = ['hoch', 'mittel', 'niedrig', 'info', 'gut'];<\/p>\n<p>    function liste(w) { return Array.isArray(w) ? w : []; }\n    function zahl(w) { return (typeof w === 'number' && isFinite(w)) ? w : null; }\n    function zeichen(w) { return (typeof w === 'string' && w !== '') ? w : null; }\n    function text(schluessel, daten) {\n        var t = T[schluessel];\n        if (typeof t !== 'string') { return null; }\n        return t.replace(\/\\{([a-z_0-9]+)\\}\/g, function (m, k) {\n            var w = (daten && daten[k] !== undefined && daten[k] !== null) ? daten[k] : null;\n            if (w === null) { return m; }\n            if (k === 'art' && T['art_' + w]) { return T['art_' + w]; }\n            return String(w);\n        });\n    }\n    function kurz(url) {\n        var s = String(url || '').replace(\/^https?:\\\/\\\/\/, '');\n        return s.length <= 52 ? s : s.slice(0, 24) + '\u2026' + s.slice(-26);\n    }\n\n    function bewerten(antwort) {\n        var a = antwort || {};\n        if (a.fehler) { return { fehler: String(a.fehler), grund: a.grund || null, limit: zahl(a.limit) }; }\n        var befunde = liste(a.befunde).map(function (f) {\n            return { key: String(f.key || ''), stufe: STUFEN.indexOf(f.stufe) === -1 ? 'info' : f.stufe, daten: (f.daten &#038;&#038; typeof f.daten === 'object') ? f.daten : {} };\n        });\n        var gruppen = {};\n        STUFEN.forEach(function (s) { gruppen[s] = befunde.filter(function (f) { return f.stufe === s; }); });\n        var proben = liste(a.proben).map(function (z) {\n            return {\n                art: String(z.art || ''), url: String(z.url || ''), status: zahl(z.status), ort: zeichen(z.ort),\n                kb: zahl(z.kb), noindex: z.noindex === true, aehnlich: zahl(z.aehnlich)\n            };\n        });\n        var e = (a.echte &#038;&#038; typeof a.echte === 'object') ? a.echte : null;\n        return {\n            fehler: null, url: String(a.url || ''), wurzel: String(a.wurzel || ''),\n            urteil: (a.urteil === 'gut' || a.urteil === 'warnung' || a.urteil === 'kritisch') ? a.urteil : 'kritisch',\n            echte: e ? { url: String(e.url || ''), status: zahl(e.status), bytes: zahl(e.bytes) } : null,\n            proben: proben, befunde: befunde, gruppen: gruppen, dauer: zahl(a.dauer_ms), limitRest: zahl(a.limit_rest)\n        };\n    }\n\n    function skriptLaden() {\n        return new Promise(function (auf) {\n            if (window.grecaptcha) { auf(true); return; }\n            var s = document.createElement('script');\n            s.src = 'https:\/\/www.google.com\/recaptcha\/api.js?render=' + SITEKEY;\n            s.onload = function () { auf(true); }; s.onerror = function () { auf(false); };\n            document.head.appendChild(s);\n            setTimeout(function () { auf(!!window.grecaptcha); }, 8000);\n        });\n    }\n    function tokenHolen() {\n        return skriptLaden().then(function (da) {\n            if (!da || !window.grecaptcha || !window.grecaptcha.ready) { return null; }\n            return new Promise(function (auf) {\n                var fertig = false;\n                function einmal(w) { if (!fertig) { fertig = true; auf(w); } }\n                setTimeout(function () { einmal(null); }, 12000);\n                try {\n                    window.grecaptcha.ready(function () {\n                        if (fertig) { return; }\n                        if (!window.grecaptcha.execute) { einmal(null); return; }\n                        window.grecaptcha.execute(SITEKEY, { action: 'fehlcheck' }).then(function (t) { einmal(t || null); }, function () { einmal(null); });\n                    });\n                } catch (e) { einmal(null); }\n            });\n        }, function () { return null; });\n    }\n    function abfragen(url) {\n        return tokenHolen().then(function (token) {\n            return fetch(ENDPUNKT, { method: 'POST', headers: { 'Content-Type': 'application\/json' }, body: JSON.stringify({ url: url, token: token || '' }) })\n                .then(function (r) { return r.json().then(function (j) { return j; }, function () { return { fehler: 'antwort' }; }); }, function () { return { fehler: 'netz' }; });\n        });\n    }\n\n    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.FEHL = { bewerten: bewerten, darstellen: null, text: text, kurz: kurz, ENDPUNKT: ENDPUNKT, STUFEN: STUFEN, T: T };\n\n    var btn = document.getElementById('fehl-btn');\n    var out = document.getElementById('fehl-ausgabe');\n    if (!btn || !out) { return; }\n\n    function el(tag, stil, txt) { var e = document.createElement(tag); if (stil) { e.setAttribute('style', stil); } if (txt !== undefined &#038;&#038; txt !== null) { e.textContent = txt; } return e; }\n    function wert(id) { var e = document.getElementById(id); return e ? e.value : ''; }\n    var UEBERSCHRIFT = 'font-family: \"Nunito Sans\", sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.95rem; margin: 22px 0 8px;';\n    var ZELLE = 'padding: 5px 12px 5px 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem;';\n    var ZELLE_WERT = 'padding: 5px 12px 5px 0; color: var(--text-primary, #e8e8ee); font-size: 0.87rem; font-family: monospace; word-break: break-all;';\n    var KASTEN = 'background: var(--bg-body, #14141a); border: 1px solid var(--border, #2a2a35); border-radius: 8px; padding: 14px 16px; margin: 0 0 10px;';\n    var GUT = ' color: #7ee787;', WARN = ' color: #ffa94d;', ROT = ' color: #ff7b72;', GRAU = ' color: #8a8a99;';\n    var FARBEN = { hoch: '#ff7b72', mittel: '#ffa94d', niedrig: '#e3b341', info: '#8a8a99', gut: '#7ee787' };\n    var URTEIL = { gut: GUT, warnung: WARN, kritisch: ROT };\n    function gitter(sp) { return el('div', 'display: grid; grid-template-columns: ' + sp + '; gap: 0 18px; align-items: baseline;'); }\n    function paar(g, n, w, stil) { g.appendChild(el('div', ZELLE, n)); g.appendChild(el('div', ZELLE_WERT + (stil || ''), w)); }\n\n    function tabelle(b) {\n        var huelle = el('div', 'overflow-x: auto; margin: 0 0 6px;');\n        var t = el('table', 'border-collapse: collapse; width: 100%; min-width: 620px; font-size: 0.84rem;');\n        var kopf = el('tr', '');\n        [T.sp_art, T.sp_adresse, T.sp_status, T.sp_ziel, T.sp_groesse, T.sp_aehnlich, T.sp_noindex].forEach(function (n) {\n            kopf.appendChild(el('th', 'text-align: left; padding: 6px 12px 6px 0; color: #8a8a99; font-weight: 700; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.4px; border-bottom: 1px solid var(--border, #2a2a35); white-space: nowrap;', n));\n        });\n        t.appendChild(kopf);\n        b.proben.forEach(function (z) {\n            var r = el('tr', '');\n            function zelle(txt, stil) { r.appendChild(el('td', 'padding: 7px 12px 7px 0; border-bottom: 1px solid var(--border, #2a2a35); font-family: monospace; color: var(--text-primary, #e8e8ee);' + (stil || ''), txt)); }\n            zelle(T['art_' + z.art] || z.art);\n            zelle(kurz(z.url), ' word-break: break-all;');\n            var gutStatus = z.status === 404 || z.status === 410;\n            zelle(z.status !== null ? String(z.status) : T.wert_fehlt, gutStatus ? GUT : (z.status === 200 ? ROT : WARN));\n            zelle(z.ort ? kurz(z.ort) : '-', GRAU);\n            zelle(z.kb !== null ? z.kb + ' KB' : '-', GRAU);\n            zelle(z.aehnlich !== null ? Math.round(z.aehnlich * 100) + ' %' : '-', (z.aehnlich !== null &#038;&#038; z.aehnlich >= 0.85) ? WARN : GRAU);\n            zelle(z.noindex ? T.wert_ja : T.wert_nein, GRAU);\n            t.appendChild(r);\n        });\n        huelle.appendChild(t);\n        return huelle;\n    }<\/p>\n<p>    function darstellen(b, ziel) {\n        ziel.innerHTML = '';\n        if (b.fehler) {\n            var txt = T['fehler_' + b.fehler] || T.fehler_unbekannt;\n            if (b.grund && T['grund_' + b.grund]) { txt = txt + ' ' + T['grund_' + b.grund]; }\n            if (b.limit !== null) { txt = txt.replace('{limit}', String(b.limit)); }\n            ziel.appendChild(el('p', ZELLE + WARN + ' margin: 0;', txt));\n            return;\n        }\n        ziel.appendChild(el('div', 'font-size: 1.05rem; font-weight: 700; margin: 0 0 12px;' + URTEIL[b.urteil], T['urteil_' + b.urteil]));<\/p>\n<p>        var g = gitter('auto auto');\n        paar(g, T.zeile_vergleich, b.echte ? b.echte.url : (b.url || '-'), GRAU);\n        if (b.echte) { paar(g, T.zeile_vergleich_status, String(b.echte.status !== null ? b.echte.status : '-'), b.echte.status === 200 ? GUT : WARN); }\n        if (b.dauer !== null) { paar(g, T.zeile_dauer, b.dauer + ' ms', GRAU); }\n        if (b.limitRest !== null) { paar(g, T.zeile_limit, String(b.limitRest), GRAU); }\n        ziel.appendChild(g);<\/p>\n<p>        if (b.proben.length) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, T.h_proben));\n            ziel.appendChild(tabelle(b));\n            ziel.appendChild(el('p', ZELLE + ' margin: 0 0 6px; font-size: 0.8rem;', T.tabelle_hinweis));\n        }<\/p>\n<p>        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n        var irgendwas = false;\n        STUFEN.forEach(function (s) {\n            var gr = b.gruppen[s];\n            if (!gr.length) { return; }\n            irgendwas = true;\n            ziel.appendChild(el('div', 'font-weight: 700; font-size: 0.82rem; text-transform: uppercase; letter-spacing: 0.5px; margin: 14px 0 6px; color: ' + FARBEN[s] + ';', T['stufe_' + s] + ' (' + gr.length + ')'));\n            gr.forEach(function (f) {\n                var k = el('div', KASTEN + ' border-left: 3px solid ' + FARBEN[s] + ';');\n                var daten = {};\n                Object.keys(f.daten).forEach(function (n) { daten[n] = (n === 'url' || n === 'ziel') ? kurz(f.daten[n]) : f.daten[n]; });\n                var t = text('befund_' + f.key, daten) || f.key;\n                var teile = t.split(' || ');\n                k.appendChild(el('div', 'color: var(--text-primary, #e8e8ee); font-size: 0.9rem; font-weight: 700;', teile[0]));\n                if (teile[1]) { k.appendChild(el('div', ZELLE + ' padding: 6px 0 0; line-height: 1.55;', teile[1])); }\n                ziel.appendChild(k);\n            });\n        });\n        if (!irgendwas) { ziel.appendChild(el('p', ZELLE + ' margin: 0;', T.keine_befunde)); }\n    }\n    window.LW_TEST.FEHL.darstellen = darstellen;<\/p>\n<p>    var laeuft = false;\n    btn.addEventListener('click', function () {\n        if (laeuft) { return; }\n        laeuft = true; btn.disabled = true;\n        out.innerHTML = '';\n        out.appendChild(el('p', ZELLE + GRAU + ' margin: 0;', T.laeuft));\n        abfragen(wert('fehl-url')).then(function (a) { darstellen(bewerten(a), out); laeuft = false; btn.disabled = false; },\n            function () { darstellen(bewerten({ fehler: 'netz' }), out); laeuft = false; btn.disabled = false; });\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fragt drei Adressen ab, die es nicht geben kann \u2014 eine ohne Endung, eine auf .html und eine auf Schr\u00e4gstrich \u2014 und vergleicht die Antworten mit einer Seite, die es gibt. Eine fehlende Seite, die mit 200 antwortet, ist der stille Fehler: Suchmaschinen nehmen sie auf, Verweispr\u00fcfer schweigen, und die kaputten Verweise fallen niemandem auf.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9283,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92289,92759,92292],"class_list":["post-15702","page","type-page","status-publish","hentry","tag-seo-de","tag-web-development-de","tag-web-performance-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt - Lukas Wojcik - Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Fragt drei Adressen ab, die es nicht geben kann \u2014 eine ohne Endung, eine auf .html und eine auf Schr\u00e4gstrich \u2014 und vergleicht die Antworten mit einer Seite, die es gibt. Eine fehlende Seite, die mit 200 antwortet, ist der stille Fehler: Suchmaschinen nehmen sie auf, Verweispr\u00fcfer schweigen, und die kaputten Verweise fallen niemandem auf.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/soft-404-error-page-checker\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/soft-404-error-page-checker\\\/\",\"name\":\"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-09-05T22:47:42+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/soft-404-error-page-checker\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/soft-404-error-page-checker\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/soft-404-error-page-checker\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Toolbox\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/toolbox-2\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"luky\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt - Lukas Wojcik - Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/","og_locale":"en_US","og_type":"article","og_title":"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt - Lukas Wojcik - Blog","og_description":"Fragt drei Adressen ab, die es nicht geben kann \u2014 eine ohne Endung, eine auf .html und eine auf Schr\u00e4gstrich \u2014 und vergleicht die Antworten mit einer Seite, die es gibt. Eine fehlende Seite, die mit 200 antwortet, ist der stille Fehler: Suchmaschinen nehmen sie auf, Verweispr\u00fcfer schweigen, und die kaputten Verweise fallen niemandem auf.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/","og_site_name":"Lukas Wojcik - Blog","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/og-default.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/","name":"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-09-05T22:47:42+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/soft-404-error-page-checker\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Toolbox","item":"https:\/\/www.lukaswojcik.com\/blog\/toolbox-2\/"},{"@type":"ListItem","position":3,"name":"Soft-404- und Fehlerseiten-Pr\u00fcfer: Was eine Seite auf eine Adresse antwortet, die es nicht gibt"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"luky","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15702","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=15702"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/15702\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9283"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15702"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15702"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}