{"id":13430,"date":"2026-08-31T15:41:05","date_gmt":"2026-08-31T13:41:05","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/werkzeuge\/canonical-hreflang-indexing-inspector\/"},"modified":"2026-08-31T15:41:05","modified_gmt":"2026-08-31T13:41:05","slug":"canonical-hreflang-indexing-inspector","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/canonical-hreflang-indexing-inspector\/","title":{"rendered":"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale"},"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;\">\u00dcber die Indexierbarkeit entscheiden vier Signale, und sie k\u00f6nnen einander widersprechen, ohne dass etwas kaputt aussieht. Ein Canonical, das woandershin zeigt, gibt die Bewertung an eine andere Adresse ab. Ein noindex hinter einer robots.txt-Sperre wird nie gelesen und wirkt deshalb nie. Hier wird die Seite geholt, ihre robots.txt dazu, und die vier nebeneinandergelegt.<\/p>\n<div style=\"margin-bottom: 14px;\">\n        <label for=\"ix-url\" style=\"color: var(--text-secondary, #a0a0b0); display: block; font-size: 0.85rem; margin-bottom: 5px;\">Adresse der Seite<\/label><br \/>\n        <input id=\"ix-url\" type=\"text\" value=\"https:\/\/example.com\/\" 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;\">Die Seite und ihre robots.txt werden einmal von diesem Server abgerufen, mit einem schlichten GET und ohne Cookies. Anfragen in private Netze, an Loopback- und Link-local-Adressen werden abgelehnt, auch \u00fcber Weiterleitungen. Die Abfrage ist \u00fcber reCAPTCHA v3 gesch\u00fctzt; die aufrufende IP-Adresse und das Ziel werden eine Stunde lang gespeichert, um die H\u00e4ufigkeit zu begrenzen.<\/p>\n<p>    <button id=\"ix-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;\">Signale lesen<\/button><\/p>\n<div id=\"ix-ausgabe\" style=\"margin-top: 22px;\"><\/div>\n<\/div>\n<p><script>\n(function () {\n    'use strict';<\/p>\n<p>    const T = {\"einleitung\":\"\u00dcber die Indexierbarkeit entscheiden vier Signale, und sie k\u00f6nnen einander widersprechen, ohne dass etwas kaputt aussieht. Ein Canonical, das woandershin zeigt, gibt die Bewertung an eine andere Adresse ab. Ein noindex hinter einer robots.txt-Sperre wird nie gelesen und wirkt deshalb nie. Hier wird die Seite geholt, ihre robots.txt dazu, und die vier nebeneinandergelegt.\",\"label_url\":\"Adresse der Seite\",\"datenschutz\":\"Die Seite und ihre robots.txt werden einmal von diesem Server abgerufen, mit einem schlichten GET und ohne Cookies. Anfragen in private Netze, an Loopback- und Link-local-Adressen werden abgelehnt, auch \u00fcber Weiterleitungen. Die Abfrage ist \u00fcber reCAPTCHA v3 gesch\u00fctzt; die aufrufende IP-Adresse und das Ziel werden eine Stunde lang gespeichert, um die H\u00e4ufigkeit zu begrenzen.\",\"knopf\":\"Signale lesen\",\"laeuft\":\"Die Seite und ihre robots.txt werden geholt...\",\"h_uebersicht\":\"\u00dcberblick\",\"zeile_endziel\":\"Gelandet bei\",\"zeile_status\":\"Status\",\"zeile_spruenge\":\"Weiterleitungen\",\"zeile_dauer\":\"Dauer\",\"urteil_ja\":\"Nichts an diesen Signalen verhindert eine Indexierung.\",\"urteil_nein\":\"Mindestens ein Signal verhindert, dass diese Adresse indexiert wird.\",\"h_canonical\":\"Canonical\",\"canonical_keine\":\"Kein Canonical. Die Suchmaschine w\u00e4hlt selbst eines aus, und es muss nicht dieses sein.\",\"zeile_wie_geschrieben\":\"Wie geschrieben\",\"zeile_aufgeloest\":\"Aufgel\u00f6st\",\"zeile_selbstbezug\":\"Zeigt auf sich selbst\",\"h_robots\":\"Robots-Anweisungen\",\"zeile_anweisung\":\"Anweisung\",\"quelle_meta\":\"meta robots\",\"quelle_header\":\"X-Robots-Tag\",\"zeile_regel\":\"Entscheidende Regel\",\"robots_erlaubt\":\"Googlebot darf diesen Pfad holen\",\"robots_gesperrt\":\"Googlebot ist f\u00fcr diesen Pfad gesperrt\",\"robots_nicht_geholt\":\"lie\u00df sich nicht holen, die Sperre wurde nicht gepr\u00fcft\",\"h_hreflang\":\"Sprachalternativen\",\"spalte_sprache\":\"hreflang\",\"spalte_adresse\":\"Adresse\",\"h_signale\":\"Weitere Signale\",\"zeile_titel\":\"Titel\",\"zeile_beschreibung\":\"Beschreibung\",\"zeile_sprache\":\"lang-Attribut\",\"zeile_viewport\":\"Viewport\",\"h_befunde\":\"Befunde\",\"ja\":\"ja\",\"nein\":\"nein\",\"wert_keiner\":\"keiner\",\"wert_keine\":\"keine\",\"wert_unklar\":\"unklar\",\"befund_canonical_fehlt\":\"Kein Canonical. Liefern mehrere Adressen denselben Inhalt, entscheidet die Suchmaschine, welche z\u00e4hlt.\",\"befund_canonical_relativ\":\"Das Canonical ist relativ. Browser und Crawler l\u00f6sen es gegen die aktuelle Adresse auf, was gutgeht, bis die Seite unter einem zweiten Pfad erreichbar ist.\",\"befund_canonical_fremd\":\"Das Canonical zeigt auf eine andere Adresse. Diese Seite bittet damit darum, selbst nicht bewertet zu werden - die andere bekommt die Anrechnung.\",\"befund_canonical_anderer_host\":\"Das Canonical zeigt auf einen anderen Host. \u00dcber Domaingrenzen hinweg ist das eine starke Aussage und nach einer Migration ein h\u00e4ufiges Versehen.\",\"befund_noindex\":\"Ein noindex ist gesetzt. Die Seite wird nicht gelistet, was die \u00fcbrigen Signale auch sagen.\",\"befund_nofollow\":\"Ein nofollow ist gesetzt. Verweise auf dieser Seite geben nichts weiter.\",\"befund_robots_gesperrt\":\"robots.txt sperrt diesen Pfad f\u00fcr Googlebot.\",\"befund_noindex_hinter_sperre\":\"Ein noindex sitzt hinter einer robots.txt-Sperre. Der Crawler liest die Seite nie, sieht das noindex also nie - und die Adresse kann trotzdem in den Ergebnissen auftauchen, nur ohne Textauszug. Wer eine Seite herausnehmen will, muss das Crawlen erlauben und noindex setzen; das Sperren allein bewirkt das Gegenteil dessen, wonach es aussieht.\",\"befund_robots_eigene_gruppe\":\"Die robots.txt hat neben der Sterngruppe eine eigene Gruppe f\u00fcr Googlebot. Ein Crawler mit eigener Gruppe befolgt nur diese und \u00fcbergeht die Sternregeln vollst\u00e4ndig - ein Disallow unter User-agent: * gilt f\u00fcr ihn dann nicht.\",\"befund_hreflang_ohne_selbstbezug\":\"Der hreflang-Satz nennt diese Seite nicht selbst. Ein Satz ohne Selbstbezug ist unvollst\u00e4ndig und wird h\u00e4ufig als Ganzes \u00fcbergangen.\",\"befund_hreflang_ohne_xdefault\":\"Kein x-default. Besucherinnen, deren Sprache zu keiner Alternative passt, bekommen keinen benannten R\u00fcckfall.\",\"befund_hreflang_doppelt\":\"Ein Sprachcode kommt mehrfach mit verschiedenen Adressen vor.\",\"befund_hreflang_code\":\"Ein Sprachcode entspricht nicht der erwarteten Form - zwei oder drei Buchstaben, wahlweise mit Region.\",\"befund_hreflang_rueckbezug_ungeprueft\":\"Ob die genannten Alternativen hierher zur\u00fcckverweisen, wurde nicht gepr\u00fcft. Das br\u00e4uchte je Alternative einen eigenen Abruf, und eine halbe Pr\u00fcfung w\u00e4re schlechter als eine ehrliche Auslassung.\",\"befund_titel_fehlt\":\"Kein Titel.\",\"befund_beschreibung_fehlt\":\"Keine Meta-Beschreibung. Die Suchmaschine schreibt den Textauszug dann selbst aus dem Seitentext.\",\"befund_sprache_fehlt\":\"Kein lang-Attribut am html-Element.\",\"befund_ueber_weiterleitung\":\"Die Adresse wurde \u00fcber eine Weiterleitung erreicht. Die Signale oben geh\u00f6ren zum Ziel, nicht zur Eingabe.\",\"fehler_kein_token\":\"Die Pr\u00fcfung lie\u00df sich nicht starten, weil reCAPTCHA nicht geladen wurde.\",\"fehler_captcha\":\"reCAPTCHA hat die Anfrage als automatisiert eingestuft. Ein Neuladen der Seite hilft in der Regel.\",\"fehler_zu_viele\":\"Die Grenze von {limit} Pr\u00fcfungen je Stunde ist f\u00fcr diese Adresse erreicht.\",\"fehler_adresse\":\"Diese Adresse l\u00e4sst sich nicht verwenden.\",\"fehler_zaehler\":\"Der Z\u00e4hler ist nicht erreichbar, deshalb wurde nichts abgerufen.\",\"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_abruf\":\"Die Adresse lie\u00df sich nicht abrufen.\",\"fehler_unbekannt\":\"Es ging etwas schief, wof\u00fcr es keine eigene Meldung gibt.\",\"grund_leer\":\"Es wurde nichts eingegeben.\",\"grund_zu_lang\":\"Die Adresse ist zu lang.\",\"grund_unlesbar\":\"Das l\u00e4sst sich nicht als Webadresse lesen.\",\"grund_schema\":\"Abgerufen werden nur http und https.\",\"grund_benutzerinfo\":\"Adressen mit Zugangsdaten darin werden abgelehnt.\",\"grund_kein_punkt\":\"Der Hostname braucht mindestens einen Punkt.\",\"grund_hostform\":\"Der Hostname hat eine unbrauchbare Form.\",\"grund_port\":\"Abgerufen werden nur die Ports 80, 443, 8080 und 8443.\",\"grund_gesperrter_bereich\":\"Diese Adresse zeigt in ein privates oder reserviertes Netz. Solche werden nie abgerufen, auch nicht \u00fcber eine Weiterleitung.\",\"grund_kein_dns\":\"Der Hostname l\u00f6st nicht auf.\",\"grund_zu_viele_spruenge\":\"Zu viele Weiterleitungen.\"};<\/p>\n<p>    var ENDPUNKT = '\/lw-indexcheck.php';\n    var SITEKEY = '6LcrPkEtAAAAAPo1QCOf-IIM2fCL0UfdJz4y2iSY';<\/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 text(w) { return (typeof w === 'string' && w !== '') ? w : null; }<\/p>\n<p>    function bewerten(antwort) {\n        var a = antwort || {};\n        if (a.fehler) {\n            return { fehler: a.fehler, grund: a.grund || null, limit: zahl(a.limit), kette: liste(a.kette) };\n        }\n        var s = (a.signale && typeof a.signale === 'object') ? a.signale : {};\n        var robots = (a.robots && typeof a.robots === 'object') ? a.robots : null;<\/p>\n<p>        return {\n            fehler: null,\n            url: a.url || '', endziel: a.endziel || a.url || '',\n            status: zahl(a.status), dauer: zahl(a.dauer_ms), kette: liste(a.kette),\n            canonical: text(s.canonical),\n            canonicalAbsolut: text(a.canonical_absolut),\n            canonicalSelbst: (a.canonical_selbst === true || a.canonical_selbst === false)\n                ? a.canonical_selbst : null,\n            anweisungen: liste(a.robots_anweisungen),\n            noindex: !!a.noindex, nofollow: !!a.nofollow,\n            robots: robots ? {\n                erlaubt: robots.erlaubt !== false,\n                regel: (robots.regel && typeof robots.regel === 'object') ? robots.regel : null,\n                gruppen: zahl(robots.gruppen),\n                eigeneGruppe: !!robots.eigene_gruppe\n            } : null,\n            robotsGeholt: !!a.robots_geholt,\n            alternates: liste(s.alternates).filter(function (x) { return x && x.sprache; }),\n            titel: text(s.titel), beschreibung: text(s.beschreibung),\n            sprache: text(s.sprache), viewport: !!s.viewport,\n            indexierbar: a.indexierbar === true,\n            befunde: liste(a.befunde)\n        };\n    }<\/p>\n<p>    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); };\n            s.onerror = function () { auf(false); };\n            document.head.appendChild(s);\n            setTimeout(function () { auf(!!window.grecaptcha); }, 8000);\n        });\n    }\n    \/** grecaptcha.ready abwarten - execute ist bei onload noch nicht da. *\/\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: 'indexcheck' })\n                            .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, {\n                method: 'POST', headers: { 'Content-Type': 'application\/json' },\n                body: JSON.stringify({ url: url, token: token || '' })\n            }).then(function (r) {\n                return r.json().then(function (j) { return j; }, function () { return { fehler: 'antwort' }; });\n            }, function () { return { fehler: 'netz' }; });\n        });\n    }<\/p>\n<p>    window.LW_TEST = window.LW_TEST || {};\n    window.LW_TEST.IX = { bewerten: bewerten, darstellen: null, ENDPUNKT: ENDPUNKT, T: T };<\/p>\n<p>    var btn = document.getElementById('ix-btn');\n    var out = document.getElementById('ix-ausgabe');\n    if (!btn || !out) { return; }<\/p>\n<p>    function el(tag, stil, t) {\n        var e = document.createElement(tag);\n        if (stil) { e.setAttribute('style', stil); }\n        if (t !== undefined) { e.textContent = t; }\n        return e;\n    }\n    function wert(id) { var e = document.getElementById(id); return e ? e.value : ''; }<\/p>\n<p>    var UEBERSCHRIFT = 'font-family: \"Nunito Sans\", sans-serif; font-weight: 700; color: var(--text-primary, #e8e8ee); font-size: 0.92rem; margin: 18px 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 GUT = ' color: #7ee787;';\n    var WARN = ' color: #ffa94d;';\n    var GRAU = ' color: #8a8a99;';<\/p>\n<p>    function gitter(sp) {\n        return el('div', 'display: grid; grid-template-columns: ' + sp + '; gap: 0 18px; align-items: baseline;');\n    }\n    function paar(g, n, w, stil) {\n        g.appendChild(el('div', ZELLE, n));\n        g.appendChild(el('div', ZELLE_WERT + (stil || ''), w));\n    }\n    function kopfZeile(g, sp) {\n        sp.forEach(function (s) {\n            g.appendChild(el('div', ZELLE + ' font-weight: 700; color: var(--text-primary, #e8e8ee);', s));\n        });\n    }<\/p>\n<p>    function darstellen(b, ziel) {\n        ziel.innerHTML = '';\n        if (b.fehler) {\n            var t = T['fehler_' + b.fehler] || T.fehler_unbekannt;\n            if (b.grund && T['grund_' + b.grund]) { t = t + ' ' + T['grund_' + b.grund]; }\n            if (b.limit !== null) { t = t.replace('{limit}', String(b.limit)); }\n            ziel.appendChild(el('p', ZELLE + WARN + ' margin: 0;', t));\n            return;\n        }<\/p>\n<p>        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_uebersicht));\n        var g = gitter('auto auto');\n        paar(g, T.zeile_endziel, b.endziel);\n        paar(g, T.zeile_status, String(b.status === null ? '-' : b.status));\n        if (b.kette.length > 1) { paar(g, T.zeile_spruenge, String(b.kette.length - 1), WARN); }\n        if (b.dauer !== null) { paar(g, T.zeile_dauer, b.dauer + ' ms', GRAU); }\n        ziel.appendChild(g);\n        ziel.appendChild(el('div', 'margin: 10px 0 0; font-size: 0.9rem; font-weight: 700;'\n            + (b.indexierbar ? GUT : WARN), b.indexierbar ? T.urteil_ja : T.urteil_nein));<\/p>\n<p>        \/\/ --- Canonical ---\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_canonical));\n        var gc = gitter('auto auto');\n        if (b.canonical === null) {\n            ziel.appendChild(el('p', ZELLE + WARN + ' margin: 0;', T.canonical_keine));\n        } else {\n            paar(gc, T.zeile_wie_geschrieben, b.canonical);\n            if (b.canonicalAbsolut && b.canonicalAbsolut !== b.canonical) {\n                paar(gc, T.zeile_aufgeloest, b.canonicalAbsolut, GRAU);\n            }\n            paar(gc, T.zeile_selbstbezug,\n                b.canonicalSelbst === null ? T.wert_unklar : (b.canonicalSelbst ? T.ja : T.nein),\n                b.canonicalSelbst ? GUT : WARN);\n            ziel.appendChild(gc);\n        }<\/p>\n<p>        \/\/ --- Robots ---\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_robots));\n        var gr = gitter('auto auto');\n        if (b.anweisungen.length) {\n            b.anweisungen.forEach(function (a) {\n                paar(gr, T['quelle_' + a.quelle] || a.quelle, a.wert,\n                    \/noindex\/.test(String(a.wert)) ? WARN : GUT);\n            });\n        } else {\n            paar(gr, T.zeile_anweisung, T.wert_keine, GRAU);\n        }\n        if (b.robots) {\n            paar(gr, 'robots.txt', b.robots.erlaubt ? T.robots_erlaubt : T.robots_gesperrt,\n                b.robots.erlaubt ? GUT : WARN);\n            if (b.robots.regel) {\n                paar(gr, T.zeile_regel, b.robots.regel.art + ': ' + b.robots.regel.pfad, GRAU);\n            }\n        } else {\n            paar(gr, 'robots.txt', T.robots_nicht_geholt, GRAU);\n        }\n        ziel.appendChild(gr);<\/p>\n<p>        \/\/ --- hreflang ---\n        if (b.alternates.length) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, T.h_hreflang));\n            var gh = gitter('auto auto');\n            kopfZeile(gh, [T.spalte_sprache, T.spalte_adresse]);\n            b.alternates.forEach(function (a) {\n                gh.appendChild(el('div', ZELLE_WERT, a.sprache));\n                gh.appendChild(el('div', ZELLE_WERT + GRAU, a.href || '-'));\n            });\n            ziel.appendChild(gh);\n        }<\/p>\n<p>        \/\/ --- Weitere Signale ---\n        ziel.appendChild(el('div', UEBERSCHRIFT, T.h_signale));\n        var gs = gitter('auto auto');\n        paar(gs, T.zeile_titel, b.titel || T.wert_keiner, b.titel ? '' : WARN);\n        paar(gs, T.zeile_beschreibung, b.beschreibung || T.wert_keiner, b.beschreibung ? '' : WARN);\n        paar(gs, T.zeile_sprache, b.sprache || T.wert_keiner, b.sprache ? '' : WARN);\n        paar(gs, T.zeile_viewport, b.viewport ? T.ja : T.nein, b.viewport ? GUT : WARN);\n        ziel.appendChild(gs);<\/p>\n<p>        if (b.befunde.length) {\n            ziel.appendChild(el('div', UEBERSCHRIFT, T.h_befunde));\n            var l = el('ul', 'margin: 0 0 0 18px; padding: 0; color: var(--text-secondary, #a0a0b0); font-size: 0.87rem; line-height: 1.65;');\n            b.befunde.forEach(function (f) {\n                var t2 = T['befund_' + f];\n                if (t2) { l.appendChild(el('li', '', t2)); }\n            });\n            ziel.appendChild(l);\n        }\n    }\n    window.LW_TEST.IX.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('ix-url')).then(function (a) {\n            darstellen(bewerten(a), out); laeuft = false; btn.disabled = false;\n        }, function () {\n            darstellen(bewerten({ fehler: 'netz' }), out); laeuft = false; btn.disabled = false;\n        });\n    });\n})();\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Liest, was eine Seite einer Suchmaschine \u00fcber sich selbst sagt: welche Adresse sie als ma\u00dfgeblich erkl\u00e4rt, was ihre Robots-Anweisungen sagen, ob robots.txt den Crawler \u00fcberhaupt hereinl\u00e4sst, und welches dieser vier Signale die anderen lautlos aufhebt.<\/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":[92214,92032,92071],"class_list":["post-13430","page","type-page","status-publish","hentry","tag-devops-de","tag-tracking-de","tag-web-security-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale - 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\/canonical-hreflang-indexing-inspector\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Liest, was eine Seite einer Suchmaschine \u00fcber sich selbst sagt: welche Adresse sie als ma\u00dfgeblich erkl\u00e4rt, was ihre Robots-Anweisungen sagen, ob robots.txt den Crawler \u00fcberhaupt hereinl\u00e4sst, und welches dieser vier Signale die anderen lautlos aufhebt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/canonical-hreflang-indexing-inspector\/\" \/>\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\\\/canonical-hreflang-indexing-inspector\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/canonical-hreflang-indexing-inspector\\\/\",\"name\":\"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-31T13:41:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/canonical-hreflang-indexing-inspector\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/canonical-hreflang-indexing-inspector\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/werkzeuge\\\/canonical-hreflang-indexing-inspector\\\/#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\":\"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale\"}]},{\"@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":"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale - 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\/canonical-hreflang-indexing-inspector\/","og_locale":"en_US","og_type":"article","og_title":"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale - Lukas Wojcik - Blog","og_description":"Liest, was eine Seite einer Suchmaschine \u00fcber sich selbst sagt: welche Adresse sie als ma\u00dfgeblich erkl\u00e4rt, was ihre Robots-Anweisungen sagen, ob robots.txt den Crawler \u00fcberhaupt hereinl\u00e4sst, und welches dieser vier Signale die anderen lautlos aufhebt.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/canonical-hreflang-indexing-inspector\/","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\/canonical-hreflang-indexing-inspector\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/canonical-hreflang-indexing-inspector\/","name":"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-31T13:41:05+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/canonical-hreflang-indexing-inspector\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/canonical-hreflang-indexing-inspector\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/canonical-hreflang-indexing-inspector\/#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":"Pr\u00fcfer f\u00fcr Canonical, hreflang und Indexierungssignale"}]},{"@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\/13430","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=13430"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/13430\/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=13430"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}