Elikkä, firefoxilla testaillessa htaccessin errordocument toimii kunnolla, mutta kun testasin chromella ja IE:llä, niin ei toiminut.
# .htaccess ErrorDocument 404 /error.php?e=404
Tältä näyttää
IE: http://img713.imageshack.us/img713/1496/
Chrome: http://img717.imageshack.us/img717/6646/
Firefox: http://img534.imageshack.us/img534/4338/
Onko kellään ideaa mikä voisi kusta tässä?
Explorerilla taitaa olla ihan omat errorit, mitä se ei halua piilottaa - siitähän saa mainosta! :)
Voit kuitenkin tehdä jonkin systeemin, että index.php:ssa sisällytät (include) saadun sivun ($_GET["sivu"]), jollei sitä löydy (!file_exists), niin sisällytät error.php?e=404.
Kyse on selainten "ominaisuuksista".
Haun perusteella vaikuttaisi, että IE näyttää virhesivun, jos se on kooltaan yli 512 tavua. Chromesta en tiedä, kokeile.
Jos ongelma ei ratkea, yksi mahdollisuus on palauttaa virhedokumentista header-funktiolla OK-otsikko. Tässä on se huono puoli, että selain ei tulkitse sivua virhesivuksi, mutta toisaalta samasta syystä myös kaikki selaimet näyttävät sivun oikein.
<?php header($_SERVER["SERVER_PROTOCOL"]." 200 OK");
Ei kannata turvautua tähän vaihtoehtoon kuin siinä tilanteessa, että jokin tietty selain ei millään toimi muuten. Tällöinkin "ratkaisu" on parasta rajoittaa ongelmaselaimelle. Voit arvailla selainta vaikka HTTP_USER_AGENTin perusteella. Erityisesti hakuboteille kannattaa palauttaa rehellinen 404 ilman enempiä tietoja, jottei olematon sivu päädy hakutietokantaan.
Grimmi kirjoitti:
Onko kellään ideaa mikä voisi kusta tässä?
IE näyttää tuon oman ilmoituksensa silloin kun serveriltä tuleva virhesivu on "liian" pieni. Lisää jotain turhaa siihen, vaikka kommentti. En muista nyt ulkoa sitä tavurajaa, googleta jos kiinnosti.
Edit: ja älä tee tuota, mitä Metabolix sano. Siitä on enemmän haittaa ku hyötyä.
Jos käyttäjä haluaa että hän näkee "helpot virheilmoitukset" niin silloinhan hän haluaa niin. En ymmärrä mikä ongelma se on.
Aihe on jo aika vanha, joten et voi enää vastata siihen.