404 Not Found: zepsute linki, miękkie 404 i kiedy użyć 410
404 Not Found oznacza, że serwer nie ma obecnie żadnej reprezentacji dla tego URL, i nic nie mówi o tym, czy zasób kiedykolwiek istniał albo czy wróci. Ta niejednoznaczność to sedno sprawy: 404 może być zepsutym linkiem, który powinieneś naprawić, stroną usuniętą celowo, albo stroną, która działa doskonale i tylko udaje, że jej brakuje.
Co 404 mówi, a czego nie mówi
Zgodnie z RFC 9110, 404 oznacza, że serwer źródłowy nie znalazł bieżącej reprezentacji dla docelowego zasobu, albo nie chce ujawnić, że istnieje. Z tego sformułowania wynikają dwa szczegóły.
Po pierwsze, 404 celowo nie deklaruje się co do trwałości. Nie obiecuje, że URL pozostanie martwy, dlatego crawlery długo ponawiają próby dla adresów 404. Po drugie, 404 domyślnie podlega buforowaniu zgodnie z RFC 9111, więc buforujące proxy albo CDN mogą zapisać błąd i wciąż go serwować, mimo że naprawiłeś już leżący u podstaw problem. Zawsze wyczyść pamięć podręczną po naprawie 404 i przetestuj ponownie.
404 to też normalna, zdrowa odpowiedź. Każda witryna zwraca ich trochę. Warte Twojego czasu są te na adresach, które powinny działać, albo na adresach, do których ludzie próbują dotrzeć.
Zepsuty link czy naprawdę usunięte?
Te dwa przypadki wyglądają identycznie w kodzie statusu, a wymagają przeciwstawnych reakcji.
Zepsuty link oznacza, że treść istnieje, ale URL jest błędny. Zwykłe przyczyny to literówka w wewnętrznym linku, slug zmieniony po publikacji, niezgodność wielkości liter, różnica w ukośniku na końcu, migracja witryny, która zmieniła schemat adresów URL, albo wdrożenie, które przestało emitować plik. Naprawą jest przywrócenie URL albo jego przekierowanie.
Prawdziwe usunięcie oznacza, że treść zniknęła i nie wróci: wygasłe ogłoszenie o pracę, wycofany produkt, usunięta strona konta. Tu 404 jest uczciwe, ale leniwe, bo zostawia crawlery ponawiające próby, a odwiedzających z niczym.
Praktyczny sposób na rozróżnienie: czy dziś gdzieś na witrynie istnieje równoważna strona? Jeśli tak, przekieruj. Jeśli nie, zdecyduj między 404 a 410.
410 Gone, uczciwa alternatywa
410 mówi, że zasób był dostępny i został celowo usunięty, a ten stan ma być trwały. Tam gdzie 404 oznacza "nie znaleziono", 410 oznacza "usunięte celowo, przestań pytać".
Użyj 410, gdy celowo wycofujesz treść i nie masz zamiennika. To właściwy sygnał dla wygasłych ogłoszeń, wycofanych stron produktów i treści usuniętej z powodów prawnych albo redakcyjnych. Wyszukiwarki na ogół traktują 410 jako silniejszy, szybszy sygnał usunięcia niż 404, choć oba ostatecznie porzucają URL. Tak jak 404, 410 domyślnie podlega buforowaniu.
Nie używaj 410 dla niczego, co mógłbyś przywrócić, i nie używaj go jako uniwersalnej obsługi nieznanych adresów URL. Jeśli istnieje odpowiednia strona zastępcza, przekierowanie jest lepsze niż każdy z tych kodów, a wybór przekierowania ma znaczenie: zobacz 301 vs 302, żeby wybrać właściwe.
Miękkie 404 i dlaczego monitory je przeoczają
Miękkie 404 to strona, która zwraca 200 OK, podczas gdy jej treść mówi, że zasobu brakuje. Dzieje się tak, gdy aplikacja przechwytuje własny warunek "nie znaleziono" i renderuje przyjazny szablon "strony nie znaleziono" bez ustawienia kodu statusu, albo gdy trasa wyłapująca wszystko serwuje stronę główną dla każdego niedopasowanego adresu URL.
Wyszukiwarki i monitory dostępności odczytują wtedy tę samą stronę w przeciwny sposób. Google sprawdza wyrenderowaną treść, rozpoznaje wzorzec brakującej treści i klasyfikuje ją jako miękkie 404 w Search Console, więc URL nie jest indeksowany, ale budżet przeszukiwania i tak jest na niego wydawany, a sygnał staje się niejasny. Monitor porównujący kody statusu widzi 200 i zgłasza stronę jako zdrową, co jest sposobem, w jaki cała sekcja może serwować tekst "nie znaleziono" każdemu odwiedzającemu, podczas gdy panel pozostaje zielony.
Naprawą na witrynie jest zwrócenie prawdziwego 404 razem ze stroną błędu, co nic nie kosztuje i zaspokaja oba odczyty. Naprawą w monitoringu jest sprawdzanie zarówno treści, jak i statusu: sprawdź, czy obecna jest znana fraza z prawdziwej strony, tak żeby strona zwracająca 200 z błędną treścią wciąż nie przeszła sprawdzenia.
Jak naprawiać 404 we właściwej kolejności
- Potwierdź rzeczywisty kod, nie widoczną stronę. Przyjazny ekran błędu niczego nie dowodzi:
Jeśli to wypisze 200 dla strony mówiącej "nie znaleziono", masz miękkie 404.curl -sS -o /dev/null -w "%{http_code}\n" https://example.com/missing-page - Znajdź, które adresy URL są trafiane. Logi dostępu serwera i Search Console pokazują adresy 404 razem z wolumenem. Napraw według ruchu, a nie alfabetycznie.
- Najpierw napraw linki wewnętrzne. 404 osiągnięte z Twojej własnej nawigacji jest całkowicie pod Twoją kontrolą i to naprawa o najwyższej wartości.
- Przekieruj tam, gdzie istnieje prawdziwy odpowiednik. Zmapuj stary URL na najbliższą bieżącą stronę, jeden adres na raz. Unikaj przekierowywania wszystkiego na stronę główną, co wyszukiwarki też traktują jako miękkie 404.
- Zwróć 410 dla celowych usunięć bez zamiennika, żeby crawlery przestały ponawiać próby.
- Spraw, żeby strona 404 była użyteczna. Wyszukiwarka, główna nawigacja i popularne linki odzyskują odwiedzających, których traci goła strona błędu.
- Wyczyść pamięci podręczne i przetestuj ponownie. Ponieważ 404 podlega buforowaniu, zweryfikuj naprawiony URL spoza swojej sieci, a nie tylko z serwera źródłowego.
Sprawdzanie kodu i treści razem
Zmiana slugu, aktualizacja wtyczki albo zmiana trasowania psuje zestaw adresów URL, podczas gdy strona główna wciąż się wczytuje, więc nic nie alarmuje i nikt nie zauważa, dopóki ruch albo konwersje nie spadną. Zaplanowane sprawdzenie HTTP Twoich ważnych adresów URL porównuje zarówno kod statusu, jak i oczekiwaną treść strony, co wyłapuje zarówno prawdziwe 404, jak i miękkie 404. Po szerszą rodzinę kodów po stronie klienta i po sposób odróżnienia prawdziwej pomyłki klienta od błędnej konfiguracji serwera zobacz przegląd 4xx.