[apache] custom 404 error page

Fiecare dintre noi a intra pe o pagina web care nu exista. Asta se poate intimpla din mai multe cauze  : culegi url de mana si gresesti vre-o 2 caractere, sau au fost facute modificari pe site si astfel o pagina veche nu mai este disponibila. Motive si cauze sunt multe, ideea e ca la intrarea intr-un url invalid, se deschide o pagina cu eroarea 404 – pagina care este definita la nivel de server si… arata foarte prost.

( exemplu de o pagina 404 )

De aceea e bine sa customizezi aceasta pagina ca sa poti prelucra informatiile si sa directezi frumos utilizatorul pe calea cea buna.

Mai inainte de toate as vrea sa zic ce inseamna acest numar 404 ( ca sa nu apara intrebarea de ce anume 404 si nu 303 :) ). Atunci cand se scrie un url in browser si se incearca a incarca pagina, se face un request ( cerere ) la serverul web pentru a se cere un raspuns. Serverul raspunde cu nishte informatii aditionale ( headere ) in care si se contine un status code al raspunsului pe care il da ( un exemplu de cerere a unei pagini in telnet ). Astfel arata un header care contine acest cod :

HTTP/1.0 200 OK

se specifica versiunea de HTTP folosita si codul 200 ( totul e ok ) si stringul ce caracterizeaza codul 200. Urmatorul exemplu a unei erori 404 :

HTTP/1.1 404 Not Found

Aceste coduri sunt numere in intervalul 100 – 599 si sunt impartite in clase ( mai multe informatii aici despre ele ), astfel codurile mai mare de 400 sunt coduri de eroare cauzate de catre client, iar 404 = Not found ( resursele cerute nu sunt gasite dar pot fi disponibile iar peste o perioada de timp ).

Acum, specificarea unei pagini atunci cand se produce o eroare 404 se poate face din fisierul .htaccess , adaugand urmatoarea linie :

ErrorDocument 404 /notfound.html

unde se specifica codul de eroare ( 404 ) si pagina care se va incarca (url paginii trebuie sa inceapa cu “/” care zice serverului ca sa caute pagina in directoriul root al domeniului ).

Dupa ce creez si fisierul notfound.html, o erorare 404 arata astfel :

ceea ce este mult mai acceptabil si ofera mai multa siguranta utilizatorului :) .

end