Jeśli w przeglądarce internetowej wpiszesz nieistniejący adres URL to ujrzysz jeden z trzech możliwych komunikatów.
Pierwszym rodzajem błędu jest podanie niepoprawnego adresu serwera. Domena lorem.ipsum.pl, nie jest opisana w DNS, a zatem wpisanie w przeglądarce adresu:
http://lorem.ipsum.pl/dolor/sitamet.html
zakończy się błędem. W takiej sytuacji przeglądarka wyświetli komunikat Nie odnaleziono serwera widoczny na rysunku 1.
Rysunek 1. Komunikat wyświetlany przez Firefoksa po podaniu błędnego adresu serwera
Drugim rodzajem błędu jest podanie adresu URL zawierającego poprawną nazwę serwera oraz błędną nazwę pliku, np.:
http://example.net/lorem/ipsum/dolor.html
Domena example.net jest zarejestrowana i posiada stronę WWW, co możemy stwierdzić odwiedzając witrynę http://example.net. Jednak na serwerze nie istnieje plik o nazwie:
/lorem/ipsum/dolor.html
W tej sytuacji serwer example.net wysyła odpowiedź:
HTTP/1.x 404 Not Found
na co przeglądarka reaguje wyświetlając stronę Not found widoczną na rysunku 2.
Rysunek 2. Komunikat wyświetlany przez Firefoksa po połączeniu z serwerem, na którym nie zainstalowano obsługi błędu 404
Trzecim rodzajem stron wyświetlanych w odpowiedzi na nieistniejące adresy URL są dedykowane strony obsługi błędu 404. Strona taka zazwyczaj zachowuje stylistykę serwera, a przy tym zawiera komunikat informujący o zaistniałym błędzie. Rysunek 3 przedstawia stronę obsługi błędu 404 na serwerze google.pl po podaniu adresu:
http://www.google.pl/lorem/ipsum/dolor.html
Rysunek 3. Komunikat wyświetlany przez Firefoksa po połączeniu z serwerem, na którym zainstalowano obsługę błędu 404
Mamy zatem trzy rodzaje stron wyświetlanych po podaniu nieistniejącego adresu URL:
Oczywiście w przypadku pierwszego rodzaju błędu za wygląd wyświetlanej strony odpowiada wyłącznie przeglądarka. Z punktu widzenia webmastera jest to przypadek nieciekawy.
W artykule zajmiemy się tym, w jaki sposób na serwerze zainstalować obsługę błędów 404 tak, by zamiast komunikatu z rysunku 2 internauta ujrzał ładną stronę WWW z rysunku 3. Podane przykłady będą dotyczyły wyłącznie serwera Apache i interpretatora PHP.