HTTP fejlécek és hibakezelés
Szeretném megoldani, hogy a hibaoldalakat ne cache-eljék a böngészők, ezért szükség volna arra, hogy a hibaoldalak fejlécét módosítani tudjam. Az nagyszerű lenne, ha ezeket a beállításokat nem csak statikusan tudnám megadni, hanem dinamikusan is módosíthatóak lennének, de egyelőre még az alap feladattal is gond van, mégpedig:
1. Ha a szerver (Apache 2.2) alapértelmezett hibaoldalait használom, akkor nem tudom módosítani a fejléceket (legalábbis eddig nem találtam működő megoldást erre, még a szerver központi konfigurációs beállításai között sem, pedig az esetemben - a kód hordozhatósága érdekében - a .htaccess fájlt kellene használni).
2. Ha egyedi hibaoldalakat használok, akkor már több módszer is létezik a fejlécek módosítására, de ekkor a hibaoldal fájlokat kívülről közvetlenül is meg lehet hívni, nem csak hiba esetén, és ezt szintén szeretném elkerülni.
3. Ha pedig olyan helyre teszem a hibaoldalakat, ahol közvetlenül nem lehet elérni őket, akkor a szerver hiba esetén sem tudja kiszolgálni a hibaoldal fájlokat.
Olyan frappáns megoldást keresek, amely megfelel a fenti feltételeknek, azaz módosítani tudom vele a hibaoldalak fejlécét, és nem lesznek a hibaoldal fájlok közvetlenül elérhetőek, mindemellett a megoldás legyen egyszerű, ne álljon több száz kódsorból. Ha valaki tud ilyet, ossza meg! Szerintem többen örömmel vennénk azt is, ha valaki, aki járatos a HTTP fejlécek módosításának lehetőségeiben írna egy kis összefoglalót a témában. Előre is kösz!
Ui.: Szerver oldali nyelvként PHP-t használok, tehát a .htaccess mellett még erre tudok támaszkodni.
■ 1. Ha a szerver (Apache 2.2) alapértelmezett hibaoldalait használom, akkor nem tudom módosítani a fejléceket (legalábbis eddig nem találtam működő megoldást erre, még a szerver központi konfigurációs beállításai között sem, pedig az esetemben - a kód hordozhatósága érdekében - a .htaccess fájlt kellene használni).
2. Ha egyedi hibaoldalakat használok, akkor már több módszer is létezik a fejlécek módosítására, de ekkor a hibaoldal fájlokat kívülről közvetlenül is meg lehet hívni, nem csak hiba esetén, és ezt szintén szeretném elkerülni.
3. Ha pedig olyan helyre teszem a hibaoldalakat, ahol közvetlenül nem lehet elérni őket, akkor a szerver hiba esetén sem tudja kiszolgálni a hibaoldal fájlokat.
Olyan frappáns megoldást keresek, amely megfelel a fenti feltételeknek, azaz módosítani tudom vele a hibaoldalak fejlécét, és nem lesznek a hibaoldal fájlok közvetlenül elérhetőek, mindemellett a megoldás legyen egyszerű, ne álljon több száz kódsorból. Ha valaki tud ilyet, ossza meg! Szerintem többen örömmel vennénk azt is, ha valaki, aki járatos a HTTP fejlécek módosításának lehetőségeiben írna egy kis összefoglalót a témában. Előre is kösz!
Ui.: Szerver oldali nyelvként PHP-t használok, tehát a .htaccess mellett még erre tudok támaszkodni.
Hibaoldalak
2. Egyedi hibaoldalaknál lásd be, hogy a /404.php és a /nemletezik oldal meghívása dettó ugyanazt az oldalt fogja produkálni, ha jól végezted a dolgodat. Ergó semmivel sem lesz beljebb a kliens, ha a "real" 404.php-ra fut rá, mint ha egy tökéletesen nem létező oldalra.
3. Ez így van.
+1. ha a teljes kiszolgálást egy darab belépőponton keresztül kezeled (index.php), akkor onnantól kezdve teljesen nálad van a labda, hogy mire szolgálsz ki 404-et és mire nem.
Tapasztalatom szerint
2. Ez a 404-nél rendben van, de más hibaoldalaknál már jelentésbeli eltérés mutatkozik, ugyanis minden hibaoldalnak 404-et kellene küldenie közvetlen elérésnél, nem pedig a saját értékét (403, stb.), hiszen ez jelentené azt a kliensnek, hogy ott nincs is ilyen fájl.
+1 Ez az, ahol elvész a "frappáns" jelző, és bejön a kemény kódolás :)
Háát
+1: igazából manapság legjobb tudomásom szerint így működnek a profi webalkalmazások. Odáig is elmegyek, hogy ha OOP/MVC szemléletet akarsz követni, akkor a $_GET, $_POST, $_SESSION, stb szuperglobálisokat is fedd el valamilyen osztállyal, mert akkor sokkal könnyebb lesz tesztet írni a kódodra vagy egységesen implementálni valamit, mint ha mindenki egy közös globális spaceben turmákol.
Hibaoldal meghívása
... persze kérdés ki fogja kitalálni hogy a hibaoldalad a
Valami hasonló
Csak az a gondom, hogy nekem ez és a másik megoldás is kicsit tákolás ízű, emellett a kód különböző helyeken történő felhasználása esetén telepítéskor gondoskodni kellene az egyedi azonosítók generálásáról és beállításáról, ez pedig megint a kódolást növeli.
A rendszer által biztosított, egyszerű megoldást keresek, már ha létezik ilyen egyáltalán.
01. ErrorDocument 403 /403.php?a1523ef227ebaa1b45a395f11cb2a883
???