Obsługa błędu 404 i miękki 404
Co serwer odpowiada na nieistniejący adres. Musi to być 404: brakująca strona z odpowiedzią 200 trafia do indeksu jako prawdziwa.
Gdy ktoś prosi o stronę, która nie istnieje, serwer musi to zakomunikować kodem 404 (lub 410 — „usunięto na stałe”). Sama strona błędu może wyglądać dowolnie — przyjazny tekst, wyszukiwarka, link do strony głównej — ale kod odpowiedzi musi być błędem. Gdy brakująca strona odpowiada 200, mamy „miękki 404”: wyszukiwarki traktują ją jak prawdziwą, indeksują puste kopie strony błędu i marnują budżet indeksowania na adresy, które nie powinny istnieć. Monitoring przestaje też wyłapywać uszkodzone linki, bo każdy URL „działa”.
Jak sprawdza to SiteScan
Skaner prosi o losową ścieżkę, której na pewno nie ma w witrynie, i odczytuje kod końcowej odpowiedzi:
- zielony: 404 lub 410;
- żółty „Miękki 404”: kod 2xx, także po przekierowaniu na stronę główną odpowiadającą 200;
- żółty z kodem odpowiedzi: cokolwiek innego, np. 500 lub 403 — roboty uznają, że serwer jest zepsuty albo blokuje dostęp, a nie że strony brak.
Jak to naprawić
Niech domyślna trasa zwraca prawdziwy 404: w nginx error_page 404 /404.html;, w aplikacji jednostronicowej serwer lub framework powinien ustawiać kod dla nieznanych tras, zamiast zawsze serwować index.html z 200. Nie przekierowuj nieistniejących adresów na stronę główną. Szczegóły i przypadki brzegowe w artykule o miękkich błędach 404.
Sprawdź ten element na swojej stronie
Uruchom bezpłatny skan: raport pokaże ten wiersz dla Twojej domeny razem z pozostałymi kontrolami audytu.
Więcej w sekcji „Adresy i przekierowania”
Co sprawdza SiteScan
Certyfikat TLS
- Ważność certyfikatu SSL/TLS
- Przestarzałe wersje TLS (1.0 i 1.1)
- Łańcuch certyfikatów TLS
- Wystawca certyfikatu TLS
- Algorytm podpisu certyfikatu
Rejestracja domeny
- Termin rejestracji domeny
- Zarejestrowana nazwa domeny
- Rejestrator domeny
- Data rejestracji domeny
- Data ostatniej zmiany domeny
- Statusy domeny w rejestrze (EPP)
- Blokada transferu domeny
- Kontakt abuse rejestratora
- Źródło danych RDAP i WHOIS
Indeksowanie
- Plik robots.txt
- CSS i JS zablokowane w robots.txt
- Mapa witryny XML (sitemap.xml)
- Indeks map witryny
- Obce adresy w mapie witryny
- Daty lastmod w mapie witryny
- Niedziałające adresy w mapie witryny
- Kanał RSS i Atom
Adresy i przekierowania
- Przekierowanie z HTTP na HTTPS
- Przekierowanie www i bez www
- Długość łańcucha przekierowań
- Obsługa błędu 404 i miękki 404
Nagłówki bezpieczeństwa
- Nagłówki bezpieczeństwa HTTP i ocena
- Nagłówek Strict-Transport-Security (HSTS)
- Nagłówek Content-Security-Policy (CSP)
- X-Content-Type-Options: nosniff
- X-Frame-Options i ochrona przed clickjackingiem
- Nagłówek Referrer-Policy
- Nagłówek Permissions-Policy
- Lista HSTS preload
- CORS i odczyt cross-origin
- Metoda HTTP TRACE
Dostarczanie i reputacja
- Nagłówek Cache-Control dla HTML
- Rewalidacja przez ETag i Last-Modified
- Obsługa HTTP/3 i QUIC
- Wersje oprogramowania w nagłówkach serwera
- Sprawdzenie list blokujących DNS (DNSBL)
Linki wewnętrzne
Odsłonięte pliki
- Odsłonięte pliki .env, .git i kopie
- Listowanie katalogów na serwerze
- Publiczne mapy źródeł JavaScript
- Odsłonięte punkty końcowe WordPressa
Pliki służbowe
- Plik security.txt
- Plik llms.txt dla asystentów AI
- Plik llms-full.txt
- Plik ads.txt dla reklam
- Plik humans.txt
- Adres /.well-known/change-password
DNS i poczta
- Rekordy MX (serwery poczty)
- Rekord SPF
- Rekord i polityka DMARC
- Podpisywanie strefy DNSSEC
- Rekord CAA
- Redundancja serwerów nazw
- Obsługa IPv6 (rekord AAAA)
- Polityka MTA-STS
- Rekord raportowania TLS-RPT
- Rekord BIMI (logo w poczcie)
- Rekord wildcard w DNS
- Wiszący CNAME i przejęcie subdomeny
Prywatność i zgoda
- Skrypty analityczne i śledzące
- Baner zgody na cookies
- Polityka prywatności
- Regulamin serwisu
- Dane wydawcy (Impressum)
- Deklaracja dostępności
Core Web Vitals
- Wynik wydajności Lighthouse
- Largest Contentful Paint (LCP)
- Cumulative Layout Shift (CLS)
- Interaction to Next Paint (INP)
- Dane terenowe CrUX a dane laboratoryjne