Sitemap.xml
ważność średniamierzonysposób sitemap
Obecność i dostępność /sitemap.xml lub /sitemap_index.xml. Brak to wolniejsze indeksowanie nowych podstron.
WIKI
artykuł z 16.09.2026 · źródeł 9Sitemap.xml to parametr monitoringu stron internetowych, który sprawdza, czy serwis udostępnia mapę witryny pod jednym z typowych adresów: /sitemap.xml, /sitemap_index.xml albo /wp-sitemap.xml, czy plik da się pobrać i odczytać jako XML oraz ile adresów stron zawiera. Wynikiem pomiaru jest obecność mapy, adres, pod którym ją znaleziono, i liczba adresów URL; nagła zmiana tej liczby jest sygnałem do sprawdzenia serwisu. Mapy witryn są prostym sposobem, w jaki właściciele serwisów informują wyszukiwarki o stronach dostępnych do przeszukiwania przez roboty [1].
Jak działa
Google opisuje mapę witryny jako plik z informacjami o stronach, filmach i innych plikach w serwisie oraz o relacjach między nimi [3]. Mapa pomaga wyszukiwarce wydajniej przeszukiwać serwis: wskazuje, które strony właściciel uważa za ważne, i podaje metadane, na przykład datę ostatniej aktualizacji [3].
W protokole Sitemaps mapa jest plikiem XML. Wymagane są trzy znaczniki: <urlset> jako element główny, <url> dla każdego wpisu i <loc> z adresem strony [2]. Opcjonalne pole <lastmod> podaje się w formacie W3C Datetime, a część z godziną można pominąć i zapisać samą datę RRRR-MM-DD [2]. Plik musi być kodowany w UTF-8, a znaki specjalne, takie jak &, zapisuje się jako encje [2]. Wszystkie adresy w mapie muszą pochodzić z jednego hosta i leżeć w katalogu mapy albo w jego podkatalogach [2].
Gdy map jest kilka, łączy je plik indeksu ze znacznikami <sitemapindex>, <sitemap> i <loc> [2]. Indeks może wskazywać wyłącznie mapy z tego samego serwisu co on sam [2]. O mapie wyszukiwarka dowiaduje się ze zgłoszenia w jej narzędziach albo z dyrektywy Sitemap: w pliku robots.txt; dyrektywa nie zależy od linii User-agent, więc jej miejsce w pliku nie ma znaczenia [2]. Google przyjmuje mapy przez raport map witryn w Search Console, przez API Search Console i przez dyrektywę w robots.txt [4].
Mapa jest wskazówką, a nie poleceniem. Protokół Sitemaps nie gwarantuje, że strony trafią do wyszukiwarki, tylko pomaga robotom lepiej przeszukiwać serwis [1]. Według Google mapa pomaga odkrywać adresy, ale nie gwarantuje, że wszystkie jej pozycje zostaną przeszukane i zindeksowane [3], a samo zgłoszenie mapy nie gwarantuje nawet, że Google ją pobierze [4]. Google pomija wartości <priority> i <changefreq>, a <lastmod> bierze pod uwagę, gdy jest konsekwentnie i sprawdzalnie dokładne [4]. Mapa przydaje się zwłaszcza serwisom dużym (zwykle powyżej 500 stron), nowym, z niewielką liczbą linków z zewnątrz, oraz bogatym w filmy, obrazy i wiadomości [3].
Standardy i specyfikacje
- Protokół Sitemaps ogranicza jeden plik mapy do 50 000 adresów i 50 MB (52 428 800 bajtów). Plik można skompresować gzipem, ale po rozpakowaniu nie może przekroczyć 50 MB. Ten sam limit, 50 000 map i 50 MB, dotyczy pliku indeksu [2].
- Google Search Central stosuje te limity do wszystkich formatów map; większy zbiór adresów trzeba podzielić na kilka map. Adresy mają być pełne i bezwzględne, a plik kodowany w UTF-8 [4].
- WordPress 5.5 wprowadził do rdzenia podstawowe, rozszerzalne mapy witryn z indeksem pod
/wp-sitemap.xml[5]. Pojedyncza mapa mieści domyślnie najwyżej 2000 pozycji, a limit można zmienić filtrem [5]. Plik robots.txt generowany przez WordPressa wskazuje indeks map, a filtrwp_sitemaps_enabledpozwala zmienić domyślne zachowanie [5]. - Yoast SEO udostępnia indeks pod
/sitemap_index.xml, a żądania/sitemap.xmlprzekierowuje na ten adres [6]. Domyślnie jedna mapa zawiera najwyżej 1000 pozycji, a wpis indeksu ma polalocilastmod[6]. - Rank Math tworzy indeks map pod
/sitemap_index.xml[8]. Domyślna liczba linków w jednej mapie wynosiła wcześniej 1000; producent obniżył ją do zalecanych 200 [8].
Zagrożenia i skutki
Brak mapy. Mały serwis z dobrym linkowaniem wewnętrznym może mapy nie potrzebować, a dużemu albo nowemu jej brak utrudnia wydajne przeszukiwanie [3]. W WordPressie zmiana ustawienia widoczności tak, by zniechęcać wyszukiwarki do indeksowania, wyłącza mapy rdzenia [5]. Zniknięcie /wp-sitemap.xml może więc towarzyszyć zablokowaniu indeksowania całego serwisu.
Spadek liczby adresów. Yoast SEO nie umieszcza w mapie stron, które wysyłają dyrektywę noindex w znaczniku meta albo w nagłówku HTTP [6]. Nagły spadek liczby adresów może więc oznaczać, że część treści oznaczono jako wyłączoną z indeksu.
Kilka generatorów naraz. Mapa pod /sitemap.xml, której nie utworzył Yoast SEO, pochodzi według producenta zwykle z innej wtyczki albo z rdzenia WordPressa; przed włączeniem map wtyczki zaleca on wyłączenie innych wtyczek map i usunięcie fizycznych plików [7]. Generatory dzielą adresy na mapy różnej wielkości [5] [6] [8], dlatego porównuje się łączną liczbę adresów, a nie liczbę plików.
Spam SEO po włamaniu. Atak znany jako Japanese keyword hack tworzy w serwisie nowe strony z automatycznie generowanym japońskim tekstem w katalogach o losowych nazwach [9]. Atakujący często modyfikują mapę witryny albo dodają nowe mapy, żeby ich adresy szybciej trafiły do indeksu [9]. Zwykle dopisują się też jako właściciele serwisu w Search Console, by zmieniać ustawienia, takie jak kierowanie geograficzne czy mapy [9]. Stosują maskowanie treści (ang. cloaking), żeby właściciel uznał stronę za naprawioną; podejrzane strony w indeksie pomaga znaleźć wyszukiwanie z operatorem site: [9]. Nagły wzrost liczby adresów w mapie nie przesądza o włamaniu, bo może wynikać z importu treści, ale uzasadnia sprawdzenie, jakie adresy doszły.
Przykłady
| Sytuacja | Co widać w mapie | Typowa przyczyna |
|---|---|---|
| WordPress bez wtyczki SEO | indeks /wp-sitemap.xml, do 2000 pozycji w mapie [5] | mapy rdzenia od wersji 5.5 [5] |
| Yoast SEO | indeks /sitemap_index.xml, /sitemap.xml przekierowuje [6] | mapy wtyczki, do 1000 pozycji w mapie [6] |
| Rank Math | indeks /sitemap_index.xml [8] | zalecane 200 linków w mapie [8] |
| Mapa rdzenia niedostępna | brak indeksu /wp-sitemap.xml | zniechęcanie wyszukiwarek w ustawieniach albo filtr wp_sitemaps_enabled [5] |
| Spadek liczby adresów | mniej pozycji w <urlset> | strony oznaczone noindex wypadają z mapy [6] |
| Nagły wzrost liczby adresów | tysiące adresów w losowych katalogach | spam SEO po włamaniu, zmieniona lub dodana mapa [9] |
| Mapa ponad limit | ponad 50 000 adresów albo 50 MB w jednym pliku [2] | brak podziału na kilka map z indeksem [4] |
- [1] What are Sitemaps? — sitemaps.org · sitemaps.org
- [2] Sitemaps XML format — Sitemap protocol · sitemaps.org
- [3] Learn about sitemaps · Google Search Central
- [4] Build and submit a sitemap · Google Search Central
- [5] New XML Sitemaps Functionality in WordPress 5.5 · Make WordPress Core
- [6] Yoast SEO XML Sitemaps: Functional specification · Yoast
- [7] XML sitemaps in the Yoast SEO plugin · Yoast
- [8] How to Configure Sitemaps in Rank Math · Rank Math
- [9] Fix the Japanese keyword hack · web.dev (Google)
STATS
wyniki z systemu · tylko liczby zbiorczeTen parametr nie zapisuje odczytu per strona — przebieg zostawia tylko ustalenia, więc liczby sprawdzonych stron i wyników „ok” system nie ma. Pojawią się po wdrożeniu zapisu przebiegów per strona per parametr.
Ten parametr nie otworzył jeszcze żadnego ustalenia w bazie LAB247. Pusto nie znaczy „czysto” — znaczy, że nic nie przekroczyło reguły.
- Przebiegów
- 33sposób sitemap
- W 30 dni
- 0przebiegów
- Ostatni
- 19.09.2026start przebiegu
- Stron w przebiegach
- —33 przebiegów bez liczby stron
CARD
karta z kodu CREATO_PING, odczyt 22.09.2026Jak ten parametr trafia do ClickUpa: wynik sondy to linia w subtasku 2. Pomiar, a usterka, którą otwiera — linia w subtasku 1. Podsumowanie (z identyfikatorem CWE i kategorią OWASP), skąd liczy się wskaźnik zagrożenia i status strony. Projekcja z bazy skanera odświeża oba subtaski co godzinę. Do 22.09 każde ustalenie dostawało własny subtask i status ze starego słownika (PODATNA, WARNING…) — te słowa zostały jeszcze w części opisów pomiaru niżej jako język wewnętrzny sond.
| Obszar i ważność | SEO · średnia (S02) |
|---|---|
| Workflow i częstotliwość | creato_ping_security_v2 · P3 działa na LAB247Skaner 2.0, rytm „p3” / „bezpieczenstwo”: premium co 6 h, reszta co 24 h (tier 1–3), co 9 dni (tier 4) · Dokładny skan. dns_integrity porównuje NS, MX, SPF i DMARC z wzorcem z poprzedniego przebiegu. |
| Sonda i helper | sposób sitemap · CREATO_PING/helpers/sitemap_check.py |
| Testy |
|
| Typ wyniku | 0 albo 1 ustalenie sitemap_absurd_url_count + statystyka: znaleziona mapa, adres, liczba URL, najnowszy lastmod |
| Jednostka | liczba adresów URL w mapie witryny |
| Próg i reguła | Timeout 10,0 s, połączenie 2,0 s. Próg: więcej niż 1000 URL przy typie usługi Strona WWW. |
| Gdzie leżą pokrętła | CREATO_PING/helpers/sitemap_check.py → SITEMAP_PATHS, ABSURD_URL_THRESHOLD, _SITEMAP_CAPCREATO_PING/helpers/security_runner.py → do_writera (bramka gate z polityki; sito powagi zniknęło 18.09)CREATO_PING/config/incident_policy.toml → [finding] sitemap_absurd_url_countCREATO_PING/workflows/_prod/creato_ping_security_v2.json → service_type w partii stron |
| Retencja odczytów | Surowy pomiar jako NIEZMIENNY wiersz tabeli `odczyty` w bazie skanera (wejście, wyjście, dowody, sha karty sondy i helpera, commit kodu) — trigger odrzuca każdą zmianę. Okno retencji z kohorty: 90 dni premium, 30 dni reszta; poza oknem zostają odczyty z werdyktem problemu, akcją albo etykietą, bo replay reguł ich potrzebuje (`skaner/retencja.py`). Do LAB247 ten kanał nie idzie (do bazy serwisu jadą dziś tylko sprawdzenia dostępności), więc poza odczytem zostaje werdykt w tabeli `werdykty` i sprawa w tabeli `sprawy`. |
| Znane rozbieżności |
|
| Karta przepisana z | CREATO_PING/helpers/sitemap_check.py · CREATO_PING/helpers/security_runner.py · CREATO_PING/config/incident_policy.toml · CREATO_PING/skaner/klasyfikacja.py · CREATO_PING/skaner/usterki.toml · CREATO_PING/skaner/ocena.py · odczyt 22.09.2026 |
sitemap_absurd_url_count: bramka polityki zamknięta (gate=false) — zostaje odczyt i werdykt „bez_subtaska” w bazie skanera, sprawa nie powstaje, więc usterka „Podejrzana liczba adresów w mapie strony” (waga 2) nie wchodzi do wskaźnika strony. W produkcji ustalenie i tak nie powstaje: przebieg przekazuje stronom pusty typ usługi, a reguła wymaga „Strona WWW”.
| Kod | Finding | Severity | Pewność | Skutek | Finding / alarm | Waga → ocena | Co zrobić |
|---|---|---|---|---|---|---|---|
| S02.01 | Podejrzana liczba URL w sitemapsitemap_absurd_url_count | Średnia | Niepewne | do weryfikacji | nie / nie | waga 2 → ocena 3–4 (niebieski) | Przejrzyj sitemap pod kątem obcych adresów. |
| S02.02 | Mapa strony zadeklarowana w robots.txt nie istniejesitemap_declared_404 | — | — | — | — / — | waga 2 → ocena 3–4 (niebieski) | — |
| Kod i klucz | S02.01 · sitemap_absurd_url_count · w tabeli typów |
|---|---|
| Co znaczy | Możliwy SEO-spam albo po prostu duża strona. |
| Kiedy powstaje | Check bierze pierwszą z /wp-sitemap.xml, /sitemap_index.xml, /sitemap.xml, która zwraca 200 i zaczyna się od <?xml. Finding powstaje, gdy service_type == "Strona WWW" i suma URL-i (z indeksu sumowane są maks. 20 podmap) przekracza 1000. |
| Severity · pewność | Średnia · Niepewne |
| Skutek dla strony | do weryfikacji · tylko statystyka (gate=false) · alarm nie |
| Waga → ocena | waga 2 → ocena 3–4 (niebieski) |
| Klasyfikacja | OCSF 1.9.0: poza klasami Findingu |
| Rekord OCSF | finding_info.analytic.uid = "S02.01" · analytic.name = "sitemap_absurd_url_count" · finding_info.types = ["S02 Sitemap.xml"] |
| Co zrobić | Przejrzyj sitemap pod kątem obcych adresów. |
| Wersje typu |
|
| Kod i klucz | S02.02 · sitemap_declared_404 · w tabeli typów |
|---|---|
| Co znaczy | opis do opracowania |
| Kiedy powstaje | nie emitowany: tylko wpis w katalogu. Check nie czyta Sitemap: z robots.txt; typ mógł powstać tylko ręcznie z audytu AI (audit_io open-subtask). |
| Severity · pewność | — |
| Skutek dla strony | — · brak w polityce |
| Waga → ocena | waga 2 → ocena 3–4 (niebieski) |
| Klasyfikacja | OCSF 1.9.0: poza klasami Findingu |
| Rekord OCSF | finding_info.analytic.uid = "S02.02" · analytic.name = "sitemap_declared_404" · finding_info.types = ["S02 Sitemap.xml"] |
| Co zrobić | — |
| Wersje typu |
|
LOOP
pętli: 1Trafności jeszcze nie liczymy: zamknięcie subtaska nie niesie dziś werdyktu (prawdziwy / fałszywy / nie dało się sprawdzić). Cztery liczby pojawią się, gdy każde zamknięcie dostanie werdykt — to warunek startu pętli 1.
Sygnał: Brak pamięci podczas skanu: publiczny debug.log jednej ze stron był bardzo duży, a klient HTTP buforował całą odpowiedź. · dotyczy też: Kopie wp-config.php, Ekspozycja .env, Ekspozycja .htaccess.bak, Dostępność xmlrpc.php, REST API: enumeracja użytkowników, Ekspozycja .git/HEAD, Dostępność readme.html, Dostępność wp-cron.php, Ekspozycja kopii zapasowych, Ekspozycja zrzutu bazy, Ekspozycja manifestów dev, Ekspozycja .DS_Store
- 1. Zbiórkaręcznieodczyt z nocnego skanu, bez zapisu per strona
- 2. Werdyktręcznieawaria procesu przypisana ścieżce debug.log
- 3. Miarabrakliczników trafności wtedy nie było
- 4. Kartabrakkarta parametru powstała 2026-09-16
- 5. Zmianazrobionestrumień z limitem 64 KB
- 6. Replaybrakbrak zapisanych odczytów do replayu
| Data | Zmiana | Powód | Wpływ na system | Commit · replay |
|---|---|---|---|---|
| 2026-07-19 | Odpowiedź sondy czytana strumieniem do 64 KB; do oceny idzie pierwsze 5000 znaków.helpers/exposure_check.py · helpers/html_fetch.py · helpers/sitemap_check.py | Do rozpoznania ekspozycji wystarcza początek pliku; zmiana dotyczy sposobu czytania, nie werdyktu. | cały system Brak pamięci w helperze zatrzymywał cały proces skanu bezpieczeństwa partii stron; ten sam limit dostało sprawdzenie sitemap. | 343b699bez replayubez zapisu zatwierdzenia |