T&R splet blog o spletnih storitvah. Razgaljamo tehnologijo!

reference spletnih strani
7th April

Poljubno 404 sporočilo – Custom 404 error not found message

Vsi poznamo 404 error oz. Not found sporočilo (napako). 404 napaka spada pod standarden seznam HTTP napak pri odjemalcu (client) in sporoča, da je sicer komunikacija s spletnim strežnikom uspešna vendar strežnik (apache, IIS) ne more dobiti vsebine, ki je bila zahtevana (lahko tudi prepovemo določeno vsebino in vržemo 404 napako).

Da bi napako obiskovalcu sporočili na lep, pregleden ali zabaven način lahko 404 napako prilagodimo našim potrebam. Dodamo lahko design, ki se sklada z designom naše spletne strani, dodamo lahko tudi poljubno sporočilo ter form z iskalnikom, ki pomaga pri iskanju prave informacije na dotični spletni strani.

Poglejmo si PHP kodo, ki jo uporabimo v povezavi z iskalnikom in uporabnikom prijazni URL-ji. Uporabnik vnese http://spletnastran.com/stran_ki_ne_obstaja/ v naslovno (URL) vrstico brsklanika, PHP koda pa vrne 404 napako ter servira našo poljubno 404 error not found sporočilo. Še enkrat, ta način deluje z zgoraj omenjenim mod_rewrite za apache oz. ISAPI_Rewrite za IIS.

PHP:
  1. <?php
  2. $url = resolveURLFolderRequest(); //funkcija, razložena v prijazni URL-ji prispevku
  3. $mode= ($url['path'] == '/') ? '/home/' : $url['path'];
  4.  
  5. if ($url == 'home') {
  6.     echo file_get_contents('home.html'); //http://spletnastran.com/home/
  7. } elseif ($url == 'welcome') {
  8.     echo file_get_contents('welcome.html'); //http://spletnastran.com/welcome/
  9. } else {
  10.     header('HTTP/1.1 404 Not Found');
  11.     echo (file_get_content('page_not_found.html')); //Smarty: $smarty->display('page_not_found.tpl');
  12.     exit;
  13. }
  14. ?>

Kakšno sporočilo bomo podali uporabniku pa je čisto naša stvar, standarden primer:

HTML:
  1. <!-- TUKAJ DODAMO NAŠ HEADER (head sekcija (title, meta), body)
  2. <div>
  3.     <h1>Error 404: File Not Found </h1>
  4.     <h3><br>
  5.       We cannot find the page you requested.</h3>
  6.       <p>
  7.   <br>
  8.       Please try the following:</p>
  9.     <ul>
  10.       <li>Make sure that the Web site address displayed in the address bar of your browser is spelled and formatted correctly.</li>
  11.       <li>If you reached this page by clicking a link, please contact us to
  12.         report the broken
  13.         link</a>.</li>
  14.       <li>Or try the tabs above or the links on the right to search or browse Yale School of Medicine web sites.</li>
  15.     </ul>
  16. </div>
  17. <!-- TUKAJ DODAMO NAŠ FOOTER -->

Poznamo pa tudi druge načine, naprimer s pomočjo .htaccess datoteke kjer dodamo sledečo direktivno:

HTML:
  1. ErrorDocument 404 /404page.html

Direktiva spletnemu strežniku (apache) sporoči, da naj v primeru 404 napake prebere in izpiše datoteko, ki smo jo defenirali v .htaccess datoteki. Pazite, da ne uporabite absolutne pot do 404 html datoteke, ampak Site root-relative pot. Torej /pot_do_404_datoteke.html in ne http://spletnastran.com/pod_do_404_datoteke.html.

Podobno lahko storite tudi pri IIS, če imate dostop do konfiguracije IIS strežnika ali uporabljate ISAPI Rewrite, ki emulira apache .htaccess na IIS strežniku.

Opomba (Vir #1, Vir #2):
Internet Explorer (before Internet Explorer 7), however, will not display custom pages unless they are larger than 512 bytes, opting to instead display a "friendly" error page. This default behaviour can be changed under Tools | Internet Options by clicking on the Advanced tab and un-checking the "Show friendly HTTP error messages" check box.

Dodatne informacije:

Deli s skupnostjo:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Podobni članki:

  1. Napiši svoj PHP error handler (obdelovalec napak:P)
  2. Apache htaccess preusmeritve
  3. Omejitev dostopa do spletne strani preko apache .htaccess in .htpasswd datoteke
  4. Iskalnikom in uporabnikom prijazni URL-ji (User – SEO freindly URL – Apache, IIS)
  5. cPanel – dodajanje apache mod_geoip modula – omejitev glede na državo obiskovalca
  6. PHP – Virtualne pod-domene – virtual subdomains
  7. Avtomatska preusmeritev pri uporabniku prijaznem sporočilu o napaki
  8. Eon MegaPos plačilni sistem – zen cart, VirtueMart, osCommerce, custom PHP modul

8x komentirano na “Poljubno 404 sporočilo – Custom 404 error not found message”

  1. smottt je napisal:

    Osebno preferiram 2. način. Me pa zanima, kako bi bilo možno 2. način združit z mod_rewrite? Da ko je brskalniku poslan 404 header, da avtomatsko preusmeri tudi na prijazen URL? Je zadeva mogoča?

  2. gasper_k je napisal:

    "Pazite, da uporabite absolutno pot do 404 html datoteke, ampak Site root-relative."

    Bi se ta stavek moral brati takole morda:
    "Pazite, da ne uporabite absolutne poti do 404 html datoteke, ampak site-root relative."?

    lp :)

  3. Roky je napisal:

    Je mogoče, naredi redirect ob 404 errorju. Čeprov se mi vse skupaj zdi malce čudno, bolj da le izpšeš lepo / uporabno sporočilo.

  4. Roky je napisal:

    @gasper_k: Res je, sem popravil. Hvala.

  5. gasper_k je napisal:

    še vedno imaš napako v sklonu: pazite, da ne uporabite absolutne poti ...

    pa ni edina, tele rodilniki "koga ali česa" te mal zafrkavajo ;)

  6. gasper_k je napisal:

    pozabil povedat: v prostem času sem grammar nazi >:)

  7. Roky je napisal:

    Priznam, da v tem področju nisem "močen" in marsikje naredim napako. Če bo kaj takega mi kar povej, bom z veseljem popravil. Hvala.

  8. Apache htaccess preusmeritve | T&R splet - internetne storitve je napisal:

    [...] Poljubno 404 sporočilo o napaki s pomočjo htaccess datoteke [...]

Dodaj komentar