Mikor használjunk 404-et?
Az aktuális munkám közben merült fel bennem egy kérdés, melyre nem tudok egyértelmű választ találni.
Mióta az oldalakat dinamikusan szolgáljuk ki, úgy, hogy gyakran csak egyetlen valódi állomány kerül meghívásra (általában index.php) különböző paraméterekkel (mostanában szép URL formájában), a not foundot is másképp kell értelmezni.
Konkrét eset: adott egy oldal felhasználói adatbázisa. A http://valami.hu/felhasznalok/pistike címet meghívva megtekinthetjük Pistike adatlapját. A http://valami.hu/felhasznalok/jozsi címet megadva hibaüzenetet kapunk, miszerint ilyen nevű felhasználó nem létezik. Ekkor az egyszeri webfejlesztő elgondolkodik, és arra jut, hogy, ha egyszer olyan tartalmat kértek, ami nem létezik, akkor illenék hozzá egy 404 Not Found fejlécet is kiadni.
Aztán tovább gondolkodik, és azt mondja, ha az adatbázis üres, akkor bizony a http://valami.hu/felhasznalok címet (melyen az összes felhasználót kilistázza a rendszer) meghívva is lehet, hogy ugyanígy kellene eljárni.
Kíváncsi lennék mások véleményére.
■ Mióta az oldalakat dinamikusan szolgáljuk ki, úgy, hogy gyakran csak egyetlen valódi állomány kerül meghívásra (általában index.php) különböző paraméterekkel (mostanában szép URL formájában), a not foundot is másképp kell értelmezni.
Konkrét eset: adott egy oldal felhasználói adatbázisa. A http://valami.hu/felhasznalok/pistike címet meghívva megtekinthetjük Pistike adatlapját. A http://valami.hu/felhasznalok/jozsi címet megadva hibaüzenetet kapunk, miszerint ilyen nevű felhasználó nem létezik. Ekkor az egyszeri webfejlesztő elgondolkodik, és arra jut, hogy, ha egyszer olyan tartalmat kértek, ami nem létezik, akkor illenék hozzá egy 404 Not Found fejlécet is kiadni.
Aztán tovább gondolkodik, és azt mondja, ha az adatbázis üres, akkor bizony a http://valami.hu/felhasznalok címet (melyen az összes felhasználót kilistázza a rendszer) meghívva is lehet, hogy ugyanígy kellene eljárni.
Kíváncsi lennék mások véleményére.
jó ötlet
Hmm
404?
Az adott esetben,szerintem ésszerübb lenne,vissza irányitani a /felhasználok oldalra/szintre,egy egyszerü szöveggel figyelmeztetve,hogy nincs ilyen felhasználo,és ott rögtön választhat is másikat,ha csak elirás tortént...
Ha pedig belépéshez kötött,és nincs belépve,akkor oda amit még láthat belépés nélkül...
megoldás lehetőségek
1. listát adsz a felhasználókról, akár linkekkel az egyes felhasználók oldalára. én ezt veszélyesnek tartom, többek között azért, mert így nagyon gyorsan begyűjthetőek a felhasználók elérhetőségei. (plusz olyan dolgok miatt is, hogy ha elég sok felhasználód van, akkor ugye lapokra szervezed a listát, és akkor a felhasznalok/34/-et meg kell külöbnöztetned a felhasznalok/im34/-től, ami ugyan programozásilag egyátalán nem nehéz, mindenesetre ráfest pár ráncot a szépurl-ed arcára)
2. dobsz neki egy not allowed üzenetet. ezt is természetesen barátságos hibaüzenetként. így az egyszeri felhasználónak nincs lista, slussz, passz. persze ilyen higher jogokkal megálldott überuserek, mint adminok ésatöbbi, azok láthatják a listát. ez a mezei úser szempontjából egy az egyben 404 érzés. talán a megfelelő megfogalmazással icipicit jobb.
3. dobod neki a fent említett 404-et. nincs ilyen oldal, vagy az oldal ebben a paraméterezésben (pl: user modulként kezelve, és nincs meg a megfelelő paraméter, ami itt a nick, szóval ha nem kezeled le, még simán hibás programfutást is eredményezhet)
4. kultúráltan a saját profil oldalára irányítod, vagy egyszerűen azt szolgálod ki neki
5. valami tök egyéb, felhasználókra vonatkozó dolgot dobsz ki neki, ami belefér a /felhasznalok/ kategóriába bár ezt nem tartom szerencsésnek. (esetleg keresőt, bizonyos adatok alapján, ha az oldal közösségi jellegű, de nem teljes listát)
a fentiekhez hozzátartozik, hogy ha konzekvensen nem teszel ki linket a sima /felhasznalok/ oldalra, akkor ugye csak direktbe bepötyögéssel jöhet oda, ami már magában is gyanús lehet (nem mondom, hogy egy külön betöréses-logba kell tenni, de ugye szándékosan kerül arra az url-re), és ugye ha így ér oda, akkor tisztában van a helyzettel. részemről a 404/403-at találom a legszerencsésebbnek, vagy közösség orientált oldalon egy felhasználó-keresőt. remélem elég kimerítően körbejártam a témát :)
maradok tisztelettel
winston
Ami tetszett a válaszodban
szerintem ha nem közösségorientált (szóval nincs kereső), akkor ez a legjobb megoldás, mert mégsem hibaoldal, vagy ilyesmi.
link
Végül
mappa
Nem jog
Üres kollekció
204 nem jó
The server has fulfilled the request but does not need to return an entity-body, and might want to return updated metainformation. The response MAY include new or updated metainformation in the form of entity-headers, which if present SHOULD be associated with the requested variant.
If the client is a user agent, it SHOULD NOT change its document view from that which caused the request to be sent. This response is primarily intended to allow input for actions to take place without causing a change to the user agent's active document view, although any new or updated metainformation SHOULD be applied to the document currently in the user agent's active view.
The 204 response MUST NOT include a message-body, and thus is always terminated by the first empty line after the header fields.
Mint azt írtam, a felhasznalok/-nél maradok is a 200-nál.