Mapa witryny XML (sitemap) to plik w formacie XML z listą adresów strony, który podpowiada robotom wyszukiwarek, jakie podstrony istnieją i kiedy ostatnio zmieniła się ich treść. Format opisuje protokół sitemaps.org (Sitemap Protocol 0.9), wspólny dla Google, Bing i innych wyszukiwarek. W WordPressie mapę generuje wtyczka SEO, na roseo.com.pl Rank Math pod adresem /sitemap_index.xml. Mapa jest sugestią dla robota: nie wymusza pobrania adresu ani jego indeksacji.
Czym jest mapa witryny XML i do czego służy?
Mapa witryny XML to lista adresów, które właściciel strony chce mieć w wyszukiwarce, zapisana w formacie czytelnym dla programów, a nie dla osób. Robot wyszukiwarki pobiera ten plik cyklicznie i porównuje go z adresami, które już zna: nowe trafiają do kolejki pobierania, a przy znanych data ostatniej zmiany podpowiada, czy pobrać je ponownie.
Mapa ma zastosowanie tam, gdzie robot sam dociera do adresów z opóźnieniem albo wcale: nowy wpis z małą liczbą linków, podstrona głęboko w strukturze serwisu albo świeża domena bez linków z innych stron. Z tego powodu mapa jest jednym z narzędzi zarządzania crawl budgetem: kieruje robota na adresy, które mają być w indeksie. W sklepie internetowym ten sam mechanizm obejmuje produkty i kategorie, co opisuje wpis o optymalizacji crawl budgetu w sklepie internetowym.
Mapa nie zastępuje linkowania wewnętrznego: adres obecny tylko w mapie, bez linku z żadnej podstrony, nie ma od serwisu żadnego innego sygnału, że jest częścią witryny.
Co powinna zawierać mapa witryny XML?
Wyłącznie adresy, które mają trafić do indeksu i zwracają kod 200, w wersji kanonicznej. Każdy inny adres w mapie to sprzeczny sygnał: robot dostaje listę do indeksacji, a na miejscu zastaje przekierowanie, błąd albo zakaz.
W mapie nie powinno być:
- adresów z
noindex(w meta robots albo w nagłówkuX-Robots-Tag), - przekierowań 301 i 302: w mapie ma być adres docelowy,
- adresów z kodem 404 i 410,
- duplikatów niekanonicznych: wersji z parametrami, z
http://zamiasthttps://, z ukośnikiem i bez ukośnika na końcu.
Adresy zapisuje się w pełnej postaci, z protokołem i domeną (https://roseo.com.pl/blog/, nie /blog/), w kodowaniu UTF-8, a znak & w adresie jako encję &. W WordPressie pilnuje tego wtyczka SEO: adres oznaczony w Rank Math jako noindex znika z mapy, a szkic albo wpis w koszu nigdy do niej nie trafia.
Nie wiesz, co jest w mapie witryny Twojej strony?
Sprawdzimy jej zawartość i stan w Search Console.
Jak wygląda struktura pliku mapy witryny?
Plik otwiera znacznik <urlset> z przestrzenią nazw protokołu, a każdy adres to jeden element <url> z obowiązkowym <loc> i opcjonalnym <lastmod>. Tak wygląda jeden wpis z pliku post-sitemap.xml na roseo.com.pl:
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://roseo.com.pl/blog/co-to-jest-blad-404/</loc>
<lastmod>2026-09-05T20:56:52+00:00</lastmod>
</url>
</urlset>Protokół przewiduje w elemencie <url> jeszcze dwa znaczniki, <priority> i <changefreq>, ale Google ich nie używa:
| Znacznik | Co zapisuje | Czy Google go używa |
|---|---|---|
| lastmod | datę ostatniej istotnej zmiany treści, w formacie W3C Datetime | tak, jeśli data odpowiada faktycznym zmianom; datę podbijaną bez zmiany treści Google przestaje uwzględniać |
| priority | ważność adresu względem innych adresów tej samej witryny, od 0.0 do 1.0 | nie, Google pomija tę wartość |
| changefreq | deklarowaną częstotliwość zmian, od „always” do „never” | nie, Google pomija tę wartość |
Rank Math zapisuje w mapie <loc>, <lastmod> i dane obrazów ze strony, bez <priority> i <changefreq>.
Gdy adresów jest więcej, niż mieści jeden plik, albo wtyczka dzieli je według typu treści, powstaje plik indeksu: <sitemapindex> z listą elementów <sitemap>, z których każdy wskazuje jedną podmapę. Na roseo.com.pl indeks sitemap_index.xml zawiera 6 podmap: post-sitemap.xml z wpisami bloga, page-sitemap1.xml i page-sitemap2.xml ze stronami (jedna lista w dwóch plikach, bo przekroczyła 200 adresów, domyślny limit Rank Math na plik), category-sitemap.xml z kategoriami bloga oraz dwie podmapy z własnym typem treści i danymi lokalizacji firmy. Każda podmapa ma w indeksie własny <lastmod>, więc robot widzi, którą pobrać ponownie. W przeglądarce Rank Math wyświetla ten plik jako tabelę (arkusz XSL), robot odczytuje surowy XML.

Jak zgłosić mapę witryny w Google Search Console?
W Search Console: Indeksowanie → Mapy witryn → pole „Dodaj nową mapę witryny” → wpisać sitemap_index.xml → Prześlij. Search Console dokleja domenę usługi sama, więc wystarczy ścieżka pliku indeksu; podmap nie zgłasza się osobno.
Po chwili raport pokazuje stan „Powodzenie” i liczbę wykrytych adresów, a przy problemach listę błędów z przyczyną (na przykład adres z kodem innym niż 200). Po zmianach na stronie ponowne zgłaszanie nie jest potrzebne: Google wraca do zgłoszonej mapy cyklicznie i odczytuje <lastmod>.
W WordPressie z Rank Math moduł Sitemap jest włączony domyślnie i generuje plik pod /sitemap_index.xml bez ingerencji w kod. Ta sama wtyczka dopisuje adres mapy do pliku robots.txt w linii Sitemap:, skąd Google odczyta go nawet bez zgłoszenia w panelu.
Mapa zgłoszona, a strony dalej nie ma w Google?
Sprawdzimy raport Mapy witryn i statusy adresów w Search Console.
Czego mapa witryny XML nie gwarantuje?
Ani pobrania adresu, ani jego indeksacji. Robot sam decyduje, które adresy pobrać i w jakiej kolejności, a wyszukiwarka osobno decyduje, czy pobrany adres trafi do indeksu. Adres z mapy może więc mieć w raporcie Strony w Search Console status strony wykrytej albo zeskanowanej, ale niezindeksowanej.
Mapa nie naprawia też problemów po stronie serwisu. Nie nadpisuje noindex, nie łączy duplikatów (o adresie kanonicznym decyduje znacznik canonical i ocena Google) i nie usuwa stron z wyników: wykreślenie adresu z mapy nie wykreśla go z indeksu, do tego służy noindex albo kod 404 lub 410.
FAQ
Nie trzeba, ale zgłoszenie daje raport. Google odczytuje adres z linii „Sitemap:” w robots.txt przy każdym pobraniu tego pliku. Bez zgłoszenia w Search Console nie widać jednak stanu mapy, liczby wykrytych adresów ani błędów.
Najwyżej 50 000 adresów, a plik nie może przekraczać 50 MB przed kompresją. Większą listę dzieli się na kilka plików spiętych indeksem, który może wskazywać do 50 000 podmap.
Według dokumentacji Google strona do 500 podstron, w której do każdej prowadzi link wewnętrzny, może działać bez mapy. W WordPressie z wtyczką SEO mapa powstaje automatycznie, więc pytanie dotyczy tylko stron budowanych bez takiej wtyczki.
W linii „Sitemap:” pliku /robots.txt albo pod typowym adresem: /sitemap_index.xml (Rank Math, Yoast SEO), /wp-sitemap.xml (WordPress bez wtyczki SEO, od wersji 5.5) lub /sitemap.xml (inne systemy).
Źródła
- sitemaps.org, „Sitemaps XML format” (Sitemap Protocol 0.9): sitemaps.org/protocol.html
- Google Search Central, „Co to jest mapa witryny”: developers.google.com
- Google Search Central, „Przygotowywanie i przesyłanie mapy witryny”: developers.google.com
- Pomoc Google Search Console, „Zarządzanie mapami witryn przy użyciu raportu Mapy witryn”: support.google.com/webmasters
- Rank Math, „How to Configure Sitemaps in Rank Math”: rankmath.com/kb/configure-sitemaps

