robots.txt i sitemap.xml robią zupełnie różne rzeczy
| Mechanizm | Cel | Zakres | Najważniejszy efekt |
|---|---|---|---|
| robots.txt | Kontrola skanowania | Ścieżki dla robotów | Nie gwarantuje braku indeksowania |
| sitemap.xml | Odkrywanie i sygnalizowanie ważnych URL-i | Lista URL-i i metadane | Wskazówka, nie gwarancja indeksowania |
| noindex | Wykluczenie z indeksu | Konkretny URL lub zasób | Działa po odczytaniu przez robota |
| rel="canonical" | Wskazanie preferowanej wersji duplikatu | Konkretny URL lub zasób | Silny sygnał, ale nie absolutna dyrektywa |
robots.txt jest częścią Robots Exclusion Protocol i informuje roboty, które ścieżki mogą lub nie mogą być skanowane. Nie jest mechanizmem uwierzytelniania ani zabezpieczeniem prywatnych danych. RFC 9309 wprost wskazuje, że reguły robots nie są formą autoryzacji dostępu. [4]
Mapa witryny służy do przekazywania wyszukiwarkom informacji o stronach, filmach i innych plikach, które uważasz za ważne, oraz o relacjach między nimi. Google używa map witryn, aby skuteczniej odkrywać i skanować zawartość. [6]
Te mechanizmy nie są zamienne. robots.txt odpowiada na pytanie, co robot może pobrać, a sitemap.xml na pytanie, które adresy warto robotowi wskazać.
robots.txt: lokalizacja i zakres działania
Plik musi nazywać się dokładnie `robots.txt` i znajdować się w katalogu głównym hosta, na przykład `https://example.com/robots.txt`. Nie można przenieść go do podkatalogu i oczekiwać, że będzie sterował całą witryną. [2][4]
Zakres robots.txt jest powiązany z protokołem, hostem i portem. Reguły z `https://example.com/robots.txt` nie sterują automatycznie `http://example.com`, `https://m.example.com` ani usługą na innym porcie. [2]
Plik powinien być zwykłym tekstem zakodowanym w UTF-8. Google stosuje limit 500 KiB i ignoruje zawartość przekraczającą ten rozmiar. [3]
Podstawowa składnia robots.txt
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://example.com/sitemap.xml
Google obsługuje pola `user-agent`, `allow`, `disallow` i `sitemap`. Inne wpisy, takie jak `crawl-delay`, nie są obsługiwane przez Google. [3]
`user-agent` wybiera robota, którego dotyczą reguły. `disallow` blokuje wskazaną ścieżkę przed skanowaniem, a `allow` może dopuścić bardziej szczegółową ścieżkę wewnątrz obszaru zablokowanego. [3]
Pole `sitemap` przyjmuje pełny, bezwzględny adres URL mapy witryny lub indeksu map witryn. Można podać wiele linii `Sitemap`. [2][3]
Dopasowanie reguł: szczegółowość, wielkość liter i wildcardy
Google wybiera najbardziej szczegółową pasującą regułę na podstawie długości ścieżki. Jeżeli reguły `allow` i `disallow` są równie szczegółowe, Google stosuje regułę mniej restrykcyjną, czyli `allow`. [3][4]
Wartości ścieżek w `allow` i `disallow` są rozróżniane pod względem wielkości liter. `/Folder/` i `/folder/` mogą więc zachowywać się inaczej. [3]
Google obsługuje `*` jako dopasowanie dowolnego ciągu znaków oraz `$` jako oznaczenie końca adresu URL. `Disallow: /*.pdf$` może więc dopasować adresy kończące się `.pdf`. [3]
robots.txt nie jest sposobem na noindex
Adres zablokowany w robots.txt może nadal pojawić się w wynikach Google, jeżeli Google odkryje go z linków w innych miejscach. W takim przypadku Google może znać sam URL bez możliwości odczytania treści strony. [1][3]
Jeżeli chcesz wykluczyć stronę z wyników, użyj `noindex` w tagu robots lub nagłówku `X-Robots-Tag`. Google musi jednak móc pobrać stronę, aby zobaczyć tę regułę. Zablokowanie jej jednocześnie w robots.txt może uniemożliwić odczytanie `noindex`. [5][16]
Dyrektywa `noindex` umieszczona bezpośrednio w robots.txt nie jest obsługiwana przez Google. [5]
Błędy robots.txt, kody HTTP i pamięć podręczna
| Kod | Zachowanie Google |
|---|---|
| 2xx | Przetwarza plik jako robots.txt |
| 3xx | Śledzi przekierowania, co najmniej 5 przejść |
| 4xx except 429 | Traktuje jak brak pliku, czyli bez ograniczeń skanowania |
| 5xx / network | Może wstrzymać skanowanie i używać ostatniej poprawnej wersji |
Dla odpowiedzi `2xx` Google przetwarza pobrany robots.txt. Przy przekierowaniach Google śledzi co najmniej pięć przejść, a później może potraktować sytuację jak brak pliku. Większość błędów `4xx`, z wyjątkiem `429`, jest traktowana tak, jakby prawidłowy robots.txt nie istniał, czyli bez ograniczeń skanowania. [3]
Przy `5xx` lub problemach sieciowych Google może początkowo zatrzymać skanowanie, potem korzystać z ostatniej poprawnej wersji robots.txt i ponawiać próby. Google opisuje osobne zasady dla pierwszych 12 godzin i kolejnych 30 dni. [3]
Google zwykle przechowuje robots.txt w pamięci podręcznej do 24 godzin, choć czas może się zmieniać zależnie od błędów i nagłówków `Cache-Control`. [3]
sitemap.xml: po co jest mapa witryny
Mapa witryny pomaga wyszukiwarce odkrywać ważne strony i pliki oraz może przekazywać informacje o ostatniej zmianie, wersjach językowych, obrazach, filmach i wiadomościach. [6][7]
Google zaznacza, że mała witryna, około 500 stron lub mniej, z bardzo dobrym linkowaniem wewnętrznym może nie potrzebować mapy witryny. Mapa staje się szczególnie przydatna przy dużych serwisach, nowych witrynach z małą liczbą linków zewnętrznych oraz przy dużej liczbie materiałów multimedialnych. [6]
Mapa witryny nie zastępuje linkowania wewnętrznego i nie gwarantuje indeksowania.
Obsługiwane formaty map witryn
Google obsługuje XML, RSS, mRSS, Atom 1.0 oraz zwykłe tekstowe mapy witryn zgodne z dokumentacją. XML jest najbardziej uniwersalny, ponieważ pozwala dodawać rozszerzenia dla obrazów, filmów, wiadomości i wersji językowych. [7]
Tekstowa mapa witryny może zawierać po jednym pełnym adresie URL w wierszu, ale nie przenosi dodatkowych metadanych. RSS i Atom są wygodne szczególnie wtedy, gdy CMS już generuje kanał zmian. [7]
Google nie deklaruje preferencji pomiędzy poprawnie obsługiwanymi formatami. Wybór powinien wynikać z architektury witryny i danych, które trzeba przekazać. [7]
Limity sitemap.xml i indeks map witryn
| Plik | Maksymalna liczba wpisów | Maksymalny rozmiar | Uwagi |
|---|---|---|---|
| Pojedyncza mapa witryny | 50,000 | 50 MB | Limit po rozpakowaniu; gzip jest dozwolony |
| Indeks map witryn | 50,000 sitemaps | 50 MB | Limit po rozpakowaniu; gzip jest dozwolony |
Pojedyncza mapa witryny może mieć maksymalnie 50 000 adresów URL lub 50 MB po rozpakowaniu. Po przekroczeniu dowolnego z tych limitów należy podzielić mapę na kilka plików. [7][8]
Indeks map witryn może wskazywać maksymalnie 50 000 map witryn i również podlega limitowi 50 MB. Można używać wielu indeksów map witryn. [8]
Pliki mogą być kompresowane gzip, ale limit rozmiaru dotyczy danych po rozpakowaniu. [8]
Jakie adresy powinny znaleźć się w sitemap.xml
Google zaleca umieszczanie w mapie adresów, które chcesz widzieć w wynikach wyszukiwania. Powinny to być pełne, bezwzględne adresy URL. [7]
Jeżeli ta sama treść jest dostępna pod wieloma adresami, w mapie warto umieszczać preferowany URL kanoniczny. Google traktuje obecność w sitemap jako słaby sygnał kanoniczności, słabszy niż przekierowanie lub `rel="canonical"`. [7][9]
W praktyce mapa witryny nie powinna być magazynem wszystkich technicznie istniejących URL-i. Nie warto celowo dodawać adresów z `noindex`, błędów 404, przekierowań albo duplikatów, jeżeli nie są to adresy, które chcesz indeksować.
`<lastmod>`, `<priority>` i `<changefreq>`
Google ignoruje wartości `<priority>` oraz `<changefreq>` w mapach witryn. Nie warto więc budować złożonej logiki ich automatycznego wyliczania wyłącznie dla Google. [7]
Google może wykorzystać `<lastmod>`, jeśli wartość jest konsekwentnie i możliwie do zweryfikowania poprawna. Data powinna odzwierciedlać ostatnią istotną zmianę treści, danych strukturalnych albo linków na stronie. Sama aktualizacja roku w stopce nie jest istotną zmianą. [7]
Fałszywe odświeżanie `<lastmod>` przy każdym deployu osłabia wiarygodność tego sygnału.
Jak zgłosić mapę witryny Google
Mapę można zgłosić w raporcie Sitemaps w Search Console, przez Search Console API albo wskazać ją w robots.txt za pomocą `Sitemap: https://example.com/sitemap.xml`. [7][11][12]
Dodanie mapy do Search Console jest przydatne także dlatego, że raport pokazuje między innymi czas odczytu i błędy przetwarzania. [7][11]
Samo zgłoszenie mapy jest jedynie wskazówką. Google wprost zaznacza, że nie gwarantuje to pobrania mapy, wykorzystania jej do skanowania ani indeksowania wskazanych adresów. [7]
Witryny wielojęzyczne i mapy specjalistyczne
Dla serwisów wielojęzycznych Google pozwala przekazywać relacje `hreflang` w sitemap XML. Każdy URL powinien wskazywać wszystkie wersje językowe, w tym samego siebie. [10]
Sitemap może być rozszerzona o dane dla obrazów, filmów i wiadomości. Google publikuje osobne wymagania dla każdego z tych rozszerzeń. [13][14][15]
Dla Google News w mapie wiadomości należy utrzymywać świeże artykuły. Dokumentacja Google wskazuje, że metadane news powinny dotyczyć artykułów z ostatnich dwóch dni. [15]
Najczęstsze błędy technicznego SEO
Najpoważniejszy błąd to zablokowanie w robots.txt strony, na której oczekujesz wykonania `noindex`. Robot nie może wtedy odczytać reguły indeksowania. [5][16]
Inny częsty problem to sprzeczne sygnały, na przykład sitemap wskazuje URL A jako preferowany, a `rel="canonical"` wskazuje URL B. Google zaleca spójność metod kanonikalizacji. [9]
W mapie witryny często trafiają też niepotrzebne parametry, duplikaty, przekierowania, strony błędów lub adresy generowane przez filtry. Taka mapa przestaje być czytelnym zestawem adresów, które rzeczywiście mają być indeksowane.
- Nie używaj robots.txt jako zamiennika `noindex`.
- Nie blokuj Google dostępu do strony, jeśli musi odczytać jej robots meta.
- Nie umieszczaj w mapie wszystkich technicznie wygenerowanych URL-i.
- Nie aktualizuj `<lastmod>` bez istotnej zmiany strony.
- Nie licz na `<priority>` i `<changefreq>` w Google.
- Nie twórz sprzecznych sygnałów sitemap i canonical.
- Nie zapominaj o osobnym robots.txt dla subdomen lub innych protokołów, jeśli są potrzebne.
Checklista wdrożenia robots.txt i sitemap.xml
Przed wdrożeniem sprawdź rzeczywiste odpowiedzi HTTP, a nie tylko pliki w repozytorium. robots.txt powinien zwracać poprawny tekst, a sitemap poprawny XML lub inny obsługiwany format. [2][7]
Po publikacji zgłoś mapę w Search Console, sprawdź raport Sitemaps i użyj kontroli adresu URL dla reprezentatywnych stron. Przy migracjach Google zaleca użycie map witryn jako jednego z mechanizmów pomagających odkrywać nowe adresy. [11][17]
Automatyzacja ma sens szczególnie przy większych serwisach: generowanie sitemap z bazy danych, walidacja statusów URL, zgodności canonical, noindex i aktualności `<lastmod>` powinna być częścią procesu publikacji.
- Czy robots.txt jest dostępny dokładnie pod `/robots.txt`?
- Czy reguły dotyczą właściwego protokołu, hosta i portu?
- Czy żaden ważny URL nie jest przypadkowo zablokowany?
- Czy strony z `noindex` pozostają dostępne dla robota?
- Czy sitemap zawiera tylko pełne, preferowane adresy URL?
- Czy pojedynczy plik mieści się w limicie 50 000 URL-i i 50 MB?
- Czy `<lastmod>` odpowiada realnym istotnym zmianom?
- Czy canonical i sitemap wskazują te same preferowane adresy?
- Czy mapy wielojęzyczne mają poprawne relacje `hreflang`?
- Czy Search Console nie raportuje błędów odczytu lub przetwarzania mapy?

