{"id":13431,"date":"2026-08-31T15:41:08","date_gmt":"2026-08-31T13:41:08","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/narzedzia\/canonical-hreflang-indexing-inspector\/"},"modified":"2026-08-31T15:41:08","modified_gmt":"2026-08-31T13:41:08","slug":"canonical-hreflang-indexing-inspector","status":"publish","type":"page","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/canonical-hreflang-indexing-inspector\/","title":{"rendered":"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania"},"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;\">O mo\u017cliwo\u015bci zaindeksowania rozstrzygaj\u0105 cztery sygna\u0142y i mog\u0105 sobie wzajemnie przeczy\u0107, cho\u0107 nic nie wygl\u0105da na zepsute. Canonical wskazuj\u0105cy gdzie indziej oddaje ocen\u0119 innemu adresowi. Noindex za blokad\u0105 w robots.txt nigdy nie zostaje odczytany, wi\u0119c nigdy nie dzia\u0142a. Tutaj pobierana jest strona, do tego jej robots.txt, a cztery sygna\u0142y uk\u0142adane obok siebie.<\/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;\">Adres strony<\/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;\">Strona i jej robots.txt s\u0105 pobierane raz z tego serwera, zwyk\u0142ym GET i bez cookies. \u017b\u0105dania do sieci prywatnych, do p\u0119tli zwrotnej i do adres\u00f3w link-local s\u0105 odrzucane, tak\u017ce przez przekierowania. Zapytanie chroni reCAPTCHA v3; wywo\u0142uj\u0105cy adres IP oraz cel s\u0105 przechowywane przez godzin\u0119 w celu ograniczenia cz\u0119stotliwo\u015bci.<\/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;\">Odczytaj sygna\u0142y<\/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\":\"O mo\u017cliwo\u015bci zaindeksowania rozstrzygaj\u0105 cztery sygna\u0142y i mog\u0105 sobie wzajemnie przeczy\u0107, cho\u0107 nic nie wygl\u0105da na zepsute. Canonical wskazuj\u0105cy gdzie indziej oddaje ocen\u0119 innemu adresowi. Noindex za blokad\u0105 w robots.txt nigdy nie zostaje odczytany, wi\u0119c nigdy nie dzia\u0142a. Tutaj pobierana jest strona, do tego jej robots.txt, a cztery sygna\u0142y uk\u0142adane obok siebie.\",\"label_url\":\"Adres strony\",\"datenschutz\":\"Strona i jej robots.txt s\u0105 pobierane raz z tego serwera, zwyk\u0142ym GET i bez cookies. \u017b\u0105dania do sieci prywatnych, do p\u0119tli zwrotnej i do adres\u00f3w link-local s\u0105 odrzucane, tak\u017ce przez przekierowania. Zapytanie chroni reCAPTCHA v3; wywo\u0142uj\u0105cy adres IP oraz cel s\u0105 przechowywane przez godzin\u0119 w celu ograniczenia cz\u0119stotliwo\u015bci.\",\"knopf\":\"Odczytaj sygna\u0142y\",\"laeuft\":\"Strona i jej robots.txt s\u0105 pobierane...\",\"h_uebersicht\":\"Przegl\u0105d\",\"zeile_endziel\":\"Wyl\u0105dowano na\",\"zeile_status\":\"Status\",\"zeile_spruenge\":\"Przekierowania\",\"zeile_dauer\":\"Czas\",\"urteil_ja\":\"Nic w tych sygna\u0142ach nie przeszkadza indeksowaniu.\",\"urteil_nein\":\"Co najmniej jeden sygna\u0142 uniemo\u017cliwia zaindeksowanie tego adresu.\",\"h_canonical\":\"Canonical\",\"canonical_keine\":\"Brak canonical. Wyszukiwarka wybiera sama, i nie musi wybra\u0107 tego.\",\"zeile_wie_geschrieben\":\"Jak zapisano\",\"zeile_aufgeloest\":\"Rozwi\u0105zane\",\"zeile_selbstbezug\":\"Wskazuje na siebie\",\"h_robots\":\"Dyrektywy robots\",\"zeile_anweisung\":\"Dyrektywa\",\"quelle_meta\":\"meta robots\",\"quelle_header\":\"X-Robots-Tag\",\"zeile_regel\":\"Rozstrzygaj\u0105ca regu\u0142a\",\"robots_erlaubt\":\"Googlebot mo\u017ce pobra\u0107 t\u0119 \u015bcie\u017ck\u0119\",\"robots_gesperrt\":\"Googlebot ma zablokowan\u0105 t\u0119 \u015bcie\u017ck\u0119\",\"robots_nicht_geholt\":\"nie da\u0142o si\u0119 pobra\u0107, blokady nie sprawdzono\",\"h_hreflang\":\"Alternatywy j\u0119zykowe\",\"spalte_sprache\":\"hreflang\",\"spalte_adresse\":\"Adres\",\"h_signale\":\"Pozosta\u0142e sygna\u0142y\",\"zeile_titel\":\"Tytu\u0142\",\"zeile_beschreibung\":\"Opis\",\"zeile_sprache\":\"atrybut lang\",\"zeile_viewport\":\"Viewport\",\"h_befunde\":\"Ustalenia\",\"ja\":\"tak\",\"nein\":\"nie\",\"wert_keiner\":\"brak\",\"wert_keine\":\"brak\",\"wert_unklar\":\"niejasne\",\"befund_canonical_fehlt\":\"Brak canonical. Gdy kilka adres\u00f3w dostarcza t\u0119 sam\u0105 tre\u015b\u0107, wyszukiwarka rozstrzyga, kt\u00f3ry si\u0119 liczy.\",\"befund_canonical_relativ\":\"Canonical jest wzgl\u0119dny. Przegl\u0105darki i roboty rozwi\u0105zuj\u0105 go wobec bie\u017c\u0105cego adresu, co dzia\u0142a, dop\u00f3ki strona nie stanie si\u0119 osi\u0105galna pod drug\u0105 \u015bcie\u017ck\u0105.\",\"befund_canonical_fremd\":\"Canonical wskazuje na inny adres. Ta strona prosi tym samym, by jej samej nie ocenia\u0107 - zaliczenie dostaje tamta.\",\"befund_canonical_anderer_host\":\"Canonical wskazuje na innego hosta. Ponad granicami domen to mocne stwierdzenie i po migracji cz\u0119sty przypadek.\",\"befund_noindex\":\"Ustawiono noindex. Strona nie zostanie wylistowana, cokolwiek m\u00f3wi\u0105 pozosta\u0142e sygna\u0142y.\",\"befund_nofollow\":\"Ustawiono nofollow. Odno\u015bniki na tej stronie niczego nie przekazuj\u0105 dalej.\",\"befund_robots_gesperrt\":\"robots.txt blokuje t\u0119 \u015bcie\u017ck\u0119 dla Googlebota.\",\"befund_noindex_hinter_sperre\":\"Noindex siedzi za blokad\u0105 w robots.txt. Robot nigdy nie czyta strony, wi\u0119c nigdy nie widzi noindex - a adres i tak mo\u017ce pojawi\u0107 si\u0119 w wynikach, tylko bez fragmentu tekstu. Kto chce usun\u0105\u0107 stron\u0119, musi zezwoli\u0107 na skanowanie i ustawi\u0107 noindex; sama blokada daje skutek odwrotny do tego, na co wygl\u0105da.\",\"befund_robots_eigene_gruppe\":\"robots.txt ma obok grupy z gwiazdk\u0105 w\u0142asn\u0105 grup\u0119 dla Googlebota. Robot z w\u0142asn\u0105 grup\u0105 stosuje tylko j\u0105 i ca\u0142kowicie pomija regu\u0142y spod gwiazdki - disallow pod User-agent: * wtedy go nie dotyczy.\",\"befund_hreflang_ohne_selbstbezug\":\"Zestaw hreflang nie wymienia tej strony. Zestaw bez odniesienia do siebie jest niepe\u0142ny i bywa pomijany w ca\u0142o\u015bci.\",\"befund_hreflang_ohne_xdefault\":\"Brak x-default. Odwiedzaj\u0105ce, kt\u00f3rych j\u0119zyk nie pasuje do \u017cadnej alternatywy, nie dostaj\u0105 wskazanego rozwi\u0105zania zast\u0119pczego.\",\"befund_hreflang_doppelt\":\"Kod j\u0119zyka wyst\u0119puje wi\u0119cej ni\u017c raz z r\u00f3\u017cnymi adresami.\",\"befund_hreflang_code\":\"Kod j\u0119zyka nie odpowiada oczekiwanej postaci - dwie lub trzy litery, opcjonalnie z regionem.\",\"befund_hreflang_rueckbezug_ungeprueft\":\"Nie sprawdzono, czy wymienione alternatywy odsy\u0142aj\u0105 z powrotem tutaj. Wymaga\u0142oby to osobnego pobrania na ka\u017cd\u0105 alternatyw\u0119, a po\u0142owiczne sprawdzenie by\u0142oby gorsze ni\u017c uczciwe pomini\u0119cie.\",\"befund_titel_fehlt\":\"Brak tytu\u0142u.\",\"befund_beschreibung_fehlt\":\"Brak meta description. Wyszukiwarka pisze wtedy fragment sama z tekstu strony.\",\"befund_sprache_fehlt\":\"Brak atrybutu lang w elemencie html.\",\"befund_ueber_weiterleitung\":\"Adres osi\u0105gni\u0119to przez przekierowanie. Sygna\u0142y powy\u017cej nale\u017c\u0105 do celu, a nie do tego, co wpisano.\",\"fehler_kein_token\":\"Kontroli nie da\u0142o si\u0119 uruchomi\u0107, bo reCAPTCHA si\u0119 nie wczyta\u0142a.\",\"fehler_captcha\":\"reCAPTCHA uzna\u0142a \u017c\u0105danie za zautomatyzowane. Zwykle pomaga ponowne wczytanie strony.\",\"fehler_zu_viele\":\"Limit {limit} sprawdze\u0144 na godzin\u0119 dla tego adresu zosta\u0142 osi\u0105gni\u0119ty.\",\"fehler_adresse\":\"Tego adresu nie da si\u0119 u\u017cy\u0107.\",\"fehler_zaehler\":\"Licznik jest niedost\u0119pny, wi\u0119c nic nie zosta\u0142o pobrane.\",\"fehler_pruefdienst\":\"Us\u0142uga reCAPTCHA by\u0142a nieosi\u0105galna.\",\"fehler_aufbau\":\"Us\u0142uga nie jest poprawnie skonfigurowana. Wina le\u017cy po tej stronie.\",\"fehler_eingabe\":\"Nie uda\u0142o si\u0119 odczyta\u0107 \u017c\u0105dania.\",\"fehler_methode\":\"Niew\u0142a\u015bciwa metoda \u017c\u0105dania.\",\"fehler_netz\":\"Us\u0142uga by\u0142a nieosi\u0105galna.\",\"fehler_antwort\":\"Nie uda\u0142o si\u0119 odczyta\u0107 odpowiedzi.\",\"fehler_abruf\":\"Nie uda\u0142o si\u0119 pobra\u0107 adresu.\",\"fehler_unbekannt\":\"Co\u015b posz\u0142o nie tak, na co nie ma osobnego komunikatu.\",\"grund_leer\":\"Nic nie zosta\u0142o wpisane.\",\"grund_zu_lang\":\"Adres jest za d\u0142ugi.\",\"grund_unlesbar\":\"Tego nie da si\u0119 odczyta\u0107 jako adresu sieciowego.\",\"grund_schema\":\"Pobierane s\u0105 tylko http i https.\",\"grund_benutzerinfo\":\"Adresy z danymi dost\u0119powymi s\u0105 odrzucane.\",\"grund_kein_punkt\":\"Nazwa hosta potrzebuje co najmniej jednej kropki.\",\"grund_hostform\":\"Nazwa hosta ma nieu\u017cyteczn\u0105 posta\u0107.\",\"grund_port\":\"Pobierane s\u0105 tylko porty 80, 443, 8080 i 8443.\",\"grund_gesperrter_bereich\":\"Ten adres wskazuje na sie\u0107 prywatn\u0105 albo zarezerwowan\u0105. Takie nigdy nie s\u0105 pobierane, tak\u017ce przez przekierowanie.\",\"grund_kein_dns\":\"Nazwa hosta si\u0119 nie rozwi\u0105zuje.\",\"grund_zu_viele_spruenge\":\"Za du\u017co przekierowa\u0144.\"};<\/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>Odczytuje, co strona m\u00f3wi wyszukiwarce o sobie samej: kt\u00f3ry adres uznaje za miarodajny, co m\u00f3wi\u0105 jej dyrektywy robots, czy robots.txt w og\u00f3le wpuszcza robota i kt\u00f3ry z tych czterech sygna\u0142\u00f3w po cichu uniewa\u017cnia pozosta\u0142e.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":9284,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"template-tool-base.php","meta":{"footnotes":""},"tags":[92229,92044,92077],"class_list":["post-13431","page","type-page","status-publish","hentry","tag-devops-pl","tag-tracking-pl","tag-web-security-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania - 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\/pl\/narzedzia\/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=\"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Odczytuje, co strona m\u00f3wi wyszukiwarce o sobie samej: kt\u00f3ry adres uznaje za miarodajny, co m\u00f3wi\u0105 jej dyrektywy robots, czy robots.txt w og\u00f3le wpuszcza robota i kt\u00f3ry z tych czterech sygna\u0142\u00f3w po cichu uniewa\u017cnia pozosta\u0142e.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/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\\\/pl\\\/narzedzia\\\/canonical-hreflang-indexing-inspector\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/canonical-hreflang-indexing-inspector\\\/\",\"name\":\"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-08-31T13:41:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/canonical-hreflang-indexing-inspector\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/canonical-hreflang-indexing-inspector\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/narzedzia\\\/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-3\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania\"}]},{\"@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":"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania - 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\/pl\/narzedzia\/canonical-hreflang-indexing-inspector\/","og_locale":"en_US","og_type":"article","og_title":"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania - Lukas Wojcik - Blog","og_description":"Odczytuje, co strona m\u00f3wi wyszukiwarce o sobie samej: kt\u00f3ry adres uznaje za miarodajny, co m\u00f3wi\u0105 jej dyrektywy robots, czy robots.txt w og\u00f3le wpuszcza robota i kt\u00f3ry z tych czterech sygna\u0142\u00f3w po cichu uniewa\u017cnia pozosta\u0142e.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/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\/pl\/narzedzia\/canonical-hreflang-indexing-inspector\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/canonical-hreflang-indexing-inspector\/","name":"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"datePublished":"2026-08-31T13:41:08+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/canonical-hreflang-indexing-inspector\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/canonical-hreflang-indexing-inspector\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/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-3\/"},{"@type":"ListItem","position":3,"name":"Kontroler canonical, hreflang i sygna\u0142\u00f3w indeksowania"}]},{"@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\/13431","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=13431"}],"version-history":[{"count":0,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/13431\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/pages\/9284"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13431"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}