Kody odpowiedzi serwera mogą pojawiać się na pierwszy rzut oka jako błędy. Zazwyczaj są oczywiste dla każdego zapytania, które wyślemy do serwera. Jednakże po głębszej inspekcji, kody odpowiedzi serwera występują również przy prawidłowym działaniu strony internetowej.
Pokażę to, używając krótkiej metafory.
Za każdym razem, gdy odwiedzasz jakąś stronę internetową, odbywa się biurokratyczna wymiana informacji pomiędzy przeglądarką a odległym serwerem.
Twoja przeglądarka internetowa (zwana klientem) rozpoczyna taką wymianę poprzez złożenie żądania do serwera o kod strony, obrazki i inne informacje.
Serwer zawsze jest w pogotowiu i zwraca różne komunikaty.
Przykład: „otrzymałem żądanie, oto czego możesz się spodziewać w ciągu najbliższych kilku sekund”.
Takie komunikaty zawierające kody odpowiedzi serwera są pomocne jednakowo dla oczekujących klientów oraz dla optymalizacji ich doświadczeń.
Kody odpowiedzi serwera – podział
Pierwsza cyfra kodu zawsze wskazuje na jego ogólne znaczenie, dzięki czemu szybko można przewidzieć, co oznaczają, nawet jeżeli nie znamy ich szczegółów.
Oto kody odpowiedzi serwera ze względu na ich podział:
2xx – Successful (udane)
Celem zwróconego kodu 2xx jest poinformowanie klienta, że wszystko zostało odpowiednio odczytane i strona wyświetli się w takiej formie, jaka jest na danym serwerze.
3xx – Redirection (przekierowanie)
Te często błędnie rozumiane kody odpowiedzi serwera pomagają aktualizować nieaktualne żądania klienta.
4xx – Client Error (błąd klienta)
Żądanie klienta nie zostało wykonane po stronie przeglądarki. Najczęstszą odpowiedzią w tym zakresie jest nieprawidłowy link lub zapytanie o nieistniejące dane na serwerze.
5xx – Server Error (błąd serwera)
Żądanie klienta nie zostało wykonane po stronie samego serwera. Naprawa i diagnoza zazwyczaj wymaga ingerencji webmastera lub kogoś, kto się po prostu na tym zna.
Kody odpowiedzi serwera – status 200
Odpowiedź z serwera o statusie 200 oznacza „wszystko jest ok, za kilka sekund otrzymasz żądane informacje”.
Otrzymujemy go za każdym razem, gdy pierwsza strona witryny załaduje się poprawnie w naszej przeglądarce.
Wobec tego, czy taki status może być błędny?
Parę miesięcy temu chciałem kupić koszulę. Konkretna marka była umieszczona wysoko w rankingu, więc od razu trafiłem na ich stronę internetową i znalazłem to, czego chciałem. Jednakże nie miałem możliwości ani żadnej opcji, aby kliknąć przycisk „kup”.
Wróciłem więc do wyników wyszukiwania i wszedłem na każdy inny link z tej marki na pierwszej stronie. Z tym samym skutkiem.
Pogrzebałem trochę i posprawdzałem. Okazało się, że ich serwer zwracał status 200 dla każdej strony, która kiedykolwiek istniała na ich witrynie. Z tego powodu stare produkty nie zostały usunięte z indeksu wyszukiwarki i wypchnęły z pierwszej strony produkty, które można było rzeczywiście kupić.
Kody odpowiedzi serwera – status 301
Status 301 – Redirect Permanently (przekierowanie stałe), czyli jest to komunikat dla klienta, że szukana informacja obecnie znajduje się w innym miejscu.
Zamiast ładowania starych informacji, serwer aktualizuje link, czyli status 301 teraz prowadzi do statusu 200, ale w nowej lokalizacji.
Jeżeli klient jest wyszukiwarką internetową, to stare miejsce zostanie zastąpione nowym w indeksie wyszukiwarki.
Kod 301 jest idealnym sposobem na korygowanie zapytań odwiedzających, którzy wpisują niewłaściwą wersję domeny.
Spójrz na przykład:
Nasza domena to mobiletry.com, ale istnieje jej kilka wersji:
- www.mobiletry.com
- mobiletry.com/
- www.mobiletry.com/
Kody odpowiedzi serwera 301 są w stanie z każdego wymienionego adresu przekierować do naszej głównej domeny, czyli mobiletry.com. Jak to wykonać? Odsyłam do mojego wcześniejszego wpisu o pliku htaccess i jego zastosowaniach.
Kod 301 jest również doskonały podczas aktualizacji oraz przenosin treści w obrębie całej witryny czy domeny. Chodzi o to, aby upewnić się, że odwiedzający, którzy przejdą do starej lokalizacji, będą po prostu automatycznie przekierowani do nowej.
Status 301 staje się błędem, gdy stare miejsce jest nadal aktualne. Błędem jest również to, jeżeli stara lokalizacja nie ma żadnego powiązania z nową. Taka strona będzie miała wtedy podwyższony wskaźnik spamu z powodu zbyt wielu przekierowań ze stron o innej tematyce.
Kody odpowiedzi serwera – status 302
302 – Found / Temporary Redirect (znaleziony / tymczasowe przekierowanie), dzięki temu statusowi można potwierdzić żądanie klienta i powiedzieć: „znalazłem informacje, o które prosisz, ale owe informacje będą za jakiś czas dostępne tylko w oryginalnym miejscu”.
Serwer rozpoczyna analizowanie nowego żądania, w wyniku czego dostajemy zwrotny status 200 w nowej lokalizacji. Jeżeli klient jest wyszukiwarką internetową, to oryginalna lokalizacja pozostanie nadal w indeksie wyszukiwarki.
Kody odpowiedzi serwera 302 powodują wiele problemów, zwłaszcza kiedy link powinien prowadzić do trwałej i nowej lokalizacji (301) lub nie został znaleziony (404). Niektórzy webmasterzy błędnie używają łańcucha przekierowań 302 i 301, co może powodować znacznie zwiększony czas ładowania witryny.
Kody odpowiedzi serwera – status 304
304 – Not Modified, jest to przekierowanie do strony, która była już wcześniej zbuforowana przez klienta.
Serwer wtedy odpowiada: „dostałem Twoje żądanie, ale informacje nie uległy żadnym zmianom od czasu ostatniego żądania, wobec tego nie traćmy czasu i wykorzystaj stronę pobraną ostatnim razem”.
Ten kod odpowiedzi pociąga za sobą wiele logicznych zapytań między klientem a serwerem. Oba podmioty będą komunikowały się tak długo, jak długo w pamięci podręcznej (cache) informacje są aktualne. Mamy możliwość wskazania, kiedy zbuforowane informacje mają się automatycznie aktualizować. Kolejny raz możemy użyć do tego pliku .htaccess:
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType text/x-component "access plus 1 month"
ExpiresByType font/truetype "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/javascript "access plus 1 month"
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
</IfModule>
Ten status nie jest tak częsty, jak jego bracia 301 oraz 302, ale po przeczytaniu „proszę wyczyścić pamięć podręczną, aby zobaczyć zmiany” to właśnie wtedy ten kod jest za to odpowiedzialny.
Co wtedy musimy zrobić?
Odświeżyć stronę? Zamknąć witrynę i otworzyć ją jeszcze raz?
Nie. Ogólnie rzecz biorąc:
F5 na klawiaturze lub odświeżenie myszką w górnym pasku może załadować nam tę samą stronę internetową, którą przed chwilą zobaczyliśmy. Nawet jeżeli jej zwartość jest cały czas zmieniania.
Dlaczego?
Ponieważ strona jest pobierana cały czas z pamięci podręcznej. Używając Ctrl + F5 lub Ctrl + R wymuszamy pełne odświeżenie, czyli wyczyszczenie pamięci podręcznej. Gwarantuje to nam zawsze aktualną wersję strony internetowej.
Kody odpowiedzi serwera – status 403
Odpowiedź serwera ze statusem 403 – Forbidden (niedozwolone) mówi nam, że serwer rozumie nasze żądanie, ale nie masz uprawnień, aby obejrzeć dane informacje.
Otrzymujemy kod 403, kiedy klient nie posiada odpowiedniego dostępu do serwera. Jest to poprawny „błąd”, jeżeli ktoś wykonuje nieautoryzowane próby wejścia we wrażliwe struktury naszej strony internetowej. Zazwyczaj taki status otrzymują roboty wyszukiwarek internetowych, które starają się indeksować daną witrynę.
Dzieje się to za pomocą pliku robots.txt, gdzie zakazujemy wejścia do naszej strony, ale może być to również wynik złej konfiguracji serwera www.
Kody odpowiedzi serwera – status 404
Kod 404 – Not Found (nie znaleziono) mówi: „nie mogę znaleźć informacji, których żądasz – jest bardzo prawdopodobne, że nigdy nawet nie istniały”.
Jest to najbardziej powszechnie spotykany błąd. Kod 404 dzierży bardzo ważną funkcję – informowanie klienta o tym, że nie znaleziono tego, o co prosił.
Błąd 404 jest tak często spotykany, że wielu webmasterów decyduje się na jego niestandardowy wygląd. Możemy ustawić status 404 tak, żeby przekierował klientów do wewnętrznej wyszukiwarki wtedy, gdy nie znajdzie tego, czego szukał.
Jak to zrobić?
Znowu przychodzi z pomocą .htaccess. Stwórz swój unikalny wygląd kodów i określ je w następujący sposób:
ErrorDocument 400 /error.php
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
ErrorDocument 500 /error.php
Kod 404 mówi również, że roboty wyszukiwarek znalazły ślepy zaułek i powinny przenieść się w inne miejsce. Jest to niezwykle ważne, kiedy taki robot ma ograniczone środki czasowe, które może przeznaczyć na jedną stronę internetową.
Odpowiedź 404 zwykle nie jest błędem serwera, ale wynikiem próby połączenia się z przestarzałymi linkami lub po prostu zwykłą literówką w adresie URL. Jeżeli Twoja strona internetowa ma wiele błędów 404, to musisz je natychmiast naprawić.
Jak sprawdzić swoją stronę pod kątem błędów 404?
Możesz użyć do tego programu Screaming Frog lub skanera online typu 404 Checker.
Jednakże, jeżeli zauważysz wiele błędów 404 z zewnętrznych linków, które nie mogą być zaktualizowane, musisz rozważyć wtedy błąd 410.
Kody odpowiedzi serwera – status 410
Status 410 – Gone (usunięto). Ten kod jest sposobem serwera na powiedzenie klientowi, że: „informacje kiedyś istniały, ale już ich nie ma”.
Błąd 410 mówi robotom wyszukiwarek oraz innym stronom internetowym, że żądana informacja była dostępna tylko przez jakiś czas i wszyscy powinni usunąć link do niej.
Roboty wyszukiwarek w przypadku stanu 404 będą nadal go testować, ale błąd 410 jest uważany za absolutny. Ze względu na jego specyficzne znaczenie, webmasterzy decydują się na unikanie błędów 410 poprzez powrót do 404 dla wszystkich „nie znaleziono” oraz „usunięto”.
Kody odpowiedzi serwera – status 503
Kod 503 – Service Unavailable (usługa niedostępna), ten błąd wymaga więcej wiedzy oraz czasu na jego naprawę. Status 503 jest powszechnie używany, jeżeli serwer jest przeciążony i nie może odpowiedzieć na żadne zapytanie. Przeciążenie może być wynikiem złej konfiguracji serwera lub nagłego zwiększenia się ruchu na stronie internetowej.
Uwaga! Kod 503 występuje również przy zakupie nowej domeny i podpięcia do serwera. Nie jest to spowodowane przeciążeniem serwera, ale brakiem propagacji DNS-ów domeny. Propagacja może trwać od kilku do 24 godzin.
Kody odpowiedzi serwera – podsumowanie
Kody odpowiedzi serwera są ważnym aspektem zrozumienia procesu wymiany informacji. Wiedza na temat tego, co poszczególny kod oznacza, jest niezbędną umiejętnością w czasach powszechnego dostępu do internetu, nawet jeżeli Twoją rolą nie jest konfigurowanie serwerów. Chodzi o to, aby wiedzieć gdzie leży błąd – czy po naszej stronie (klienta), czy wyżej (serwera).
Bądź pierwszą osobą, która skomentuje ten artykuł! 😉