november 6th, 2007404 Error – Not Found, 500 Error – Internal Server Error
Napake 404, 403, 500 …
Del vsadanjika, ki ga preživim za računalnikom, med drugim namenim izdelavi “skeleton” web aplikaciji, ki jo bom v prihodnje uporabljal pri vseh mojih spletnih projektih. V želji, da bi bil izdelek čim bolj robusten in uporabniku prijazen, sem že v začetku precej razmišljal o morebitnih napakah, ki se lahko pojavijo, ter ustreznemu reagiranju na njih. Nastal je “Error Handler” ki skrbi za dve[1] najbolj pogosti napaki spletnega protokola HTTP.
Napaka 404
ali strani ni mogoče najti je standardna napaka spletnega protokola HTTP, ki jo spletni strežnik javi brskalniku, ko zahtevanega spletnega dokumenta ne najde. Ta napaka je ponavadi posledica “zatipkanja” naslova spletnega mesta, ali pa nastane če iščemo stran ki je bila premaknjena oziroma izbrisana. Privzeta stran, ki jo prikaže brskalnik, pri tej napaki je bolj skopa.
![]()
“404 Not Found” v naslovu če gre za Apache.
![]()
“Page cannot be found” v pimeru IIS-ja.
Čeprav ni nobenega security riska[2], je vse skupaj grdo, ter uporabniku neprijazno.
Z veliko žalostjo opažam, da večina razvijalcev in webmasterjev še vedno “prezira” 404 napako. Kmica[3] mi je pa padla na oči, ob ugotovitvi, da so tudi podjetja, ki se ukvarjajo z izdelavo spletnih strani enako ignorantska.
- http://www.mojsplet.net/404
- http://www.modronebo.net/404
- http://www.red-orbit.com/404
- http://www.portal.si/404
- http://www.ewrs.net/404
- http://www.g-server.com/404
Osebno kot razvijalcu in skrbniku spletnih strani, se mi zdi pomembno, da dobim obvestilo[4], ko pride do napake v spletni aplikaciji, da lahko na njo ustrezno reagiram.
Napaka 500
ali interna napaka na strežniku je standardna napaka spletnega protokola HTTP, ki pove da je šlo nekaj narobe na strežniku na katerem se nahaja spletna stran, ampak strežnik ne ve natančno za kakšen problem gre. Napaka je tipa “server-side”, kar pomeni, da ni nič narobe z našim računalnikom ali internetno povezavo, temveč je kriv spletni strežnik. Web strežnik bi moral generirati interni error log v katerem se nahaja podroben opis napake. Za skrbnika spletne strani je toliko bolj pomembno da na tako napako čimprej reagira. Sistem dodatnega obveščanja po elektronski pošti postane nujno zlo.
Moč “Error Handlerja”
Na večini spletnih strežnikov je možno te napake prirediti tako, da prikažejo stran, ki je v večjo pomoč kot privzete. V popularnem spletnem strežniku Apache to storimo na preprosti način tako, da postavimo datoteko .htaccess na spletni strežnik.
ErrorDocument 404 /404.php ErrorDocument 500 /500.php
Moj “Error Handler” ni tako prepost, saj je vkomponiran v web aplikacijo in lovi naslednje errorje[5]:
![]()
500 Error – Internal Server Error : “pohendla” tudi vse Exceptione, ki jih “vrže” spletna aplikacija
![]()
403 Error – Forbidden : v aplikacijo je vkomponiran Acl, ki skrbi za avtorizacijo uporabnikov. V primeru, da uporabnik hoče dostopat do neavtoriziranega dela, aplikacija vrže 403 napako.
V bližnji prihodnosti bom obelodanil še “code snippet” za preprost error handler za PHP na Apache-ju[6].
Happy blogging(coding)!
- v bistvu handlam tri [↩]
- Pri Apacheju se ponavadi izpiše tudi verzija. Če ta ni vsaj verzija 1.3.37, je strežnik lahko kar hitro tarča hekerskega napada. [↩]
- prekmursko: tema [↩]
- mail, RSS, … [↩]
- z malce sarkazma, obenem pa pošlje še obvestilo o napaki po elektronski pošti [↩]
- če bo želja tudi za ASP na IIS-u [↩]
januar 26th, 2008 at 10:35
I’m experiencing some problems with 404 custom error handling in ASP. In particular when I open some "virtual" urls containing some UTF-8 chars, my error handler read called urls replacing any utf-8 character with a ‘?’. Why?
Can anyone help me?
Thank you
avgust 10th, 2008 at 22:04
You can add .htaccess file on root fo your domain and pot error handler => rerouter to file you want like;
ErrorDocument 404 /error_404.php
in this case, you can put in error_404.php file what ever you like…