Kupiłem domenę, która została zarejestrowana po raz pierwszy w 2000 roku. Na papierze taka historia wyglądała raczej jak zaleta. Potem uruchomiłem nową stronę i logi serwera zaczęły wypełniać się żądaniami do stron, których nigdy nie tworzyłem.
Ponad 1.000 żądań dziennie trafiało do URL-i, których nie było w nowym projekcie. W analytics wyglądało to jak duży skok direct traffic przy prawie zerowym zaangażowaniu. W tym samym czasie crawler Yandex wracał do starych ścieżek, otrzymywał 404 Not Found, a Yandex Webmaster zebrał w ciągu jednej nocy ponad 900 błędów.
Moje pierwsze wyjaśnienie było proste: stare boty uderzają w martwe URL-e, Yandex widzi tę aktywność i dlatego dalej je crawluje. Z mojej perspektywy właśnie tak wyglądała kolejność zdarzeń. Moje dane nie wystarczały jednak, by udowodnić taką zależność przyczynową.
Co naprawdę mogłem potwierdzić
Były trzy osobne obserwacje. Po pierwsze, serwer dostawał dużo żądań do URL-i pochodzących z poprzedniego życia domeny. Po drugie, ruch ten praktycznie nie przekładał się na realne zaangażowanie użytkowników. Po trzecie, crawler Yandex również żądał starych ścieżek, a panel Webmaster pokazał ponad 900 błędów w jedną noc.
Operacyjnie był to realny problem: głośne logi, niepotrzebne żądania i raport błędów do uporządkowania. Te fakty nie dowodzą jednak, że boty zewnętrzne spowodowały crawl Yandex ani że błędy bezpośrednio pogorszyły ranking lub ruch organiczny. Crawling to nie indeksowanie, indeksowanie to nie ranking, a raport błędów nie jest dowodem kary.
Co zbyt mocno uprościłem w 404 i 410
Wcześniej myślałem mniej więcej tak: 404 znaczy „może chwilowo nie ma”, a 410 „zniknęło na stałe”. Jako skrót myślowy to działa, ale technicznie nie jest precyzyjne.
404 Not Found oznacza, że serwer nie może dostarczyć aktualnej reprezentacji żądanego zasobu; sam status nie mówi, czy sytuacja jest tymczasowa czy trwała. 410 Gone jest bardziej szczegółowy: pasuje wtedy, gdy serwer wie, że zasób nie jest już dostępny i stan ten ma być trwały.
Ta precyzja jest ważna także w SEO. Wyszukiwarki mogą usuwać URL-e zwracające zarówno 404, jak i 410. Dlatego nie opisuję już 410 jako magicznie „mocniejszego statusu SEO” i nie uważam 404 za błędne dla każdej usuniętej strony.
Dlaczego celowane 410 nadal miały sens w moim przypadku
Stare ścieżki nie były chwilową awarią. Należały do poprzedniej zawartości domeny i nie miały miejsca w nowym projekcie. Wiedziałem, że te konkretne URL-e zniknęły na stałe. W tej sytuacji 410 Gone dokładnie opisywał ich stan.
Skonfigurowałem więc 410 tylko dla znanych legacy paths, zamiast traktować każdy nieznany URL jako 410. Po tej zmianie szum związany z crawlingiem i raportami dla starych ścieżek zmalał, a sytuacja w narzędziach dla webmasterów stała się znacznie czystsza.
Nadal ostrożnie mówię o przyczynowości. Mogę powiedzieć, że poprawa nastąpiła po zmianie i że 410 semantycznie pasował do tych URL-i. Nie mogę udowodnić, że sam 410 zatrzymał wszystkie boty. Zewnętrzny bot może zignorować znaczenie statusu HTTP i dalej odpytywać ten sam URL bez końca.
Reguła decyzyjna, której używam teraz
Przydatne pytanie nie brzmi „czy 410 jest lepsze od 404?”, tylko „co naprawdę stało się z tym URL-em?”
- Istnieje wyraźny zamiennik: użyj trwałego przekierowania, np.
301, do rzeczywiście równoważnego nowego URL-a. - Stary zasób został trwale usunięty i nie ma zamiennika:
410 Gonejest precyzyjnym wyborem. - URL jest po prostu nieznany, zawiera literówkę albo nigdy nie istniał: zwykły
404 Not Foundjest właściwy.
Unikałbym natomiast przekierowywania każdego martwego URL-a na stronę główną tylko po to, by zniknęły błędy. To ukrywa prawdziwy stan zasobu i może pogorszyć doświadczenie zarówno użytkownika, jak i crawlera.
Jak dziś audytowałbym starą domenę przed startem
Jeśli ponownie użyję domeny z historią, potraktuję jej przeszłość URL-i jako część migracji, nawet jeśli nie przenoszę samego starego serwisu.
- Sprawdzić stary footprint. Jeszcze przed startem wyszukać historyczne URL-e i oczywiste legacy sections.
- Oglądać access logs od pierwszego dnia. Powtarzające się żądania do ścieżek, których nigdy nie tworzyłeś, pokazują, że domena nadal ma zewnętrzną pamięć.
- Oddzielać ludzi, crawlers wyszukiwarek i losowe boty. Skok direct traffic i błąd crawlera to różne sygnały; nie należy automatycznie łączyć ich w jedną przyczynę.
- Klasyfikować powracające martwe URL-e. Dla każdego ważnego wzorca świadomie wybrać 301, 404 albo 410.
- Monitorować wyniki osobno. Częstotliwość żądań, raporty crawlerów i indeksowanie to różne wymiary; nie sprowadzałbym ich do jednej mglistej miary „SEO health”.
To mało pracy w porównaniu z odkrywaniem problemu dopiero wtedy, gdy logi i narzędzia webmastera są już pełne szumu.
Czego 410 nie rozwiązuje
410 to komunikat HTTP o stanie zasobu. Nie jest firewallem, rate limiterem ani mechanizmem blokowania botów. Jeśli scraper nadal wysyła żądania po otrzymaniu 410, serwer wciąż musi je odebrać i obsłużyć. Jeżeli prawdziwym problemem jest agresywny wolumen ruchu, to osobny problem infrastrukturalny.
410 nie jest też boostem SEO. Poprawny status pomaga crawlerowi zrozumieć, co stało się z URL-em; sam z siebie nie poprawia pozycji nowej strony.
Lekcja, która ze mną została
Zaskakujące nie było to, że stara domena miała stare URL-e. Zaskakujące było to, jak szybko ta niewidoczna historia wróciła po starcie: ponad 1.000 żądań dziennie do stron, których u mnie nie było, prawie zerowe zaangażowanie i ponad 900 błędów w Yandex Webmaster w jedną noc.
Stara domena nie jest pustym namespace. Linki, crawlers, skrypty i boty mogą pamiętać ścieżki wiele lat po zniknięciu pierwotnej treści. Moja obecna zasada jest prosta: audytować tę historię, zwracać status zgodny z rzeczywistością i oddzielać operacyjny ruch botów od wniosków o zachowaniu wyszukiwarki.
Historia może być atutem. Jest też stanem, który dziedziczysz.