Skąd biorą się soft 404
- Pusta strona wyników wyszukiwarki wewnętrznej albo lista, na której nie ma żadnej pozycji.
- Błąd po stronie serwera, np. brak dołączanego pliku albo zerwane połączenie z bazą, po którym szablon wyświetla komunikat z kodem 200.
- Aplikacja JavaScript z routingiem po stronie przeglądarki, która przy nieistniejącym adresie renderuje „nie znaleziono”, a serwer i tak odpowiada 200.
- Strona, której zasoby nie załadowały się Googlebotowi, np. zablokowane w robots.txt, zbyt wolne lub zbyt ciężkie, przez co po wyrenderowaniu jest pusta.
- Przekierowanie wielu starych adresów na jedną niezwiązaną stronę, np. stronę główną. Google pisze wprost, że może to zostać potraktowane jako soft 404.
Dlaczego soft 404 to problem
Adres oznaczony jako soft 404 nie trafia do wyników wyszukiwania. Jeśli to wartościowa strona, która tylko źle się renderuje, tracisz ją z indeksu bez żadnego komunikatu po stronie serwera.
Jeśli strona naprawdę jest pusta, kod 200 wprowadza w błąd użytkownika i roboty. Google wymienia soft 404 wśród adresów, które przy dużej liczbie stron mogą odbierać crawl tym ważniejszym. Na małym serwisie ten efekt jest zwykle niewielki, ale mylący status nadal warto naprawić.
Jak naprawić soft 404
| Sytuacja | Co zrobić |
|---|---|
| Treść zniknęła i nie ma zamiennika | Zwróć kod 404 lub 410. Własna strona błędu może pomagać użytkownikom, byle serwer zwracał 404. |
| Treść przeniosła się albo ma jasny odpowiednik | Przekieruj 301 na ten konkretny adres, nie na stronę główną. |
| Treść istnieje, ale Google widzi pustą stronę | Sprawdź wyrenderowaną stronę w narzędziu Sprawdzanie adresu URL. Odblokuj zasoby i napraw błędy renderowania. |
| Strona jest pusta z założenia, np. brak wyników | Dodaj treść, która pomaga użytkownikowi, albo wyłącz stronę z indeksu przez noindex. |
HTTP/1.1 404 Not Found
Content-Type: text/html; charset=utf-8HTTP/1.1 301 Moved Permanently
Location: https://example.com/buty/trampki-damskieSoft 404 w aplikacjach JavaScript
Gdy routing działa w przeglądarce, serwer nie zawsze może zwrócić właściwy kod. Google podaje dwa wyjścia: przekierowanie JavaScriptem na adres, dla którego serwer zwraca 404 (np. /not-found), albo dodanie meta robots noindex do strony błędu. Jeśli framework renderuje strony na serwerze, najprościej zwrócić 404 bezpośrednio z serwera.
const res = await fetch(`/api/produkty/${id}`);
if (res.status === 404) {
// Serwer odpowiada na /not-found kodem 404
window.location.href = '/not-found';
} else {
renderProduct(await res.json());
}Jak sprawdzić soft 404
- Otwórz w Search Console raport Indeksowanie stron i znajdź powód „Soft 404”.
- Dla kilku przykładowych adresów uruchom test na żywo w narzędziu Sprawdzanie adresu URL i obejrzyj zrzut ekranu oraz HTML wyrenderowanej strony.
- Porównaj kod odpowiedzi serwera z tym, co widzi użytkownik, np. poleceniem curl -I.
- Wybierz rozwiązanie: 404 lub 410, przekierowanie 301 na odpowiednik albo naprawa treści i renderowania. Po wdrożeniu rozpocznij w raporcie weryfikację poprawki.
$ curl -I https://example.com/produkt-ktorego-nie-ma
HTTP/2 200
# Strona pokazuje „Nie znaleziono produktu”, a serwer zwraca 200.Soft 404 to strona, która zwraca kod HTTP 200, a jednocześnie informuje, że treści nie ma, albo jest pusta. Google traktuje ją jak stronę błędu, nie indeksuje jej i pokazuje w raporcie Indeksowanie stron w Search Console z powodem „Soft 404”.
Zwykły 404 to poprawny sygnał: serwer mówi, że strony nie ma. Przy soft 404 serwer zwraca 200, a treść mówi co innego. Kod 404 dla usuniętej strony nie jest problemem. Problemem jest niezgodność kodu z treścią.
Google nie opisuje soft 404 jako kary dla serwisu. Skutek dotyczy konkretnego adresu, który nie trafia do indeksu. Przy dużej liczbie takich adresów roboty mogą jednak tracić crawl na strony bez wartości, kosztem tych ważnych.
Nie jako domyślne rozwiązanie. Google ostrzega, że przekierowanie wielu starych adresów na jedną niezwiązaną stronę, np. główną, może zostać potraktowane jako soft 404. Przekieruj na prawdziwy odpowiednik albo zwróć 404 lub 410.
Dla Google oba kody działają tak samo. Wszystkie kody 4xx poza 429 oznaczają, że treści nie ma, a adresy już zaindeksowane zostają usunięte z indeksu. Wybierz ten, który lepiej opisuje sytuację: 410 mówi, że usunięcie jest celowe i trwałe.
Jeśli serwer nie może zwrócić 404 dla nieistniejącego adresu, przekieruj JavaScriptem na adres obsługiwany kodem 404, np. /not-found, albo dodaj do strony błędu meta robots noindex. Przy renderowaniu po stronie serwera zwróć 404 wprost.
Źródła i dalsza lektura
- Google Search Central: Błędy soft 404 i ich naprawa dokumentacja
- Google Search Central: Soft 404 w aplikacjach jednostronicowych dokumentacja
- Google Search Central: Przeniesienie witryny ze zmianą adresów URL dokumentacja
- Google: Kody stanu HTTP a roboty Google dokumentacja
- Pomoc Search Console: Raport Indeksowanie stron dokumentacja