2010-03-31 8 views
8

Ho un sito che mostra principalmente un elenco di contenuti (articoli, elementi dati, ecc.), E mi chiedo se restituire l'HTTP 404 quando l'utente naviga al di fuori dell'intervallo disponibile (ad es.).L'HTTP 404 è appropriato per il numero di pagina fuori intervallo sul contenuto paginato?

Alcuni siti visualizzano semplicemente "Nessun risultato/numero di pagina fuori intervallo" e alcuni restituiscono inoltre lo stato HTTP 404.

Cosa ne pensi e perché?

UPDATE

Non e risposta API. Questa domanda riguarda le pagine visualizzate dall'utente che, tra le altre cose, mostrano un elenco/tabella nell'area principale.

UPDATE

esempio Borderline: pagina 1'st è una pagina out-of-range, perché non ci sono dati per la lista mostrato esiste ancora.

Devo mostrare 404? Se non fosse il risultato della ricerca, non mi dispiacerebbe ... ma per la semplice visualizzazione della lista pagata/tabella dati sembra dura.

Esempio: il primo giorno di Sovraccarico dello stack eseguito e non esistono ancora domande, si colpisce la pagina iniziale e cosa, 404 o solo un 200 con messaggio "Ancora nessuna domanda"?

risposta

0

vorrei andare per 404 quando il numero di pagina è! = 1, indipendentemente da dove il numero di pagina viene posto nella (stringa di query o nel percorso) URI, e andare per il soft 404 quando non ci sono risultati, ma la pagina il numero è esattamente 1 o non è dato.

Perché?

Il set di risultati 1 è disponibile come pagina di destinazione per il set di risultati (even search results -- see Google here), quindi è stato trovato ed esiste (se non per mostrare il set di risultati) per indicare che non ci sono dati nel set di risultati.

Quindi non viene trovato alcun numero di pagina di set di risultati al di fuori del set di risultati, non esiste alcun punto significativo per queste pagine/risorse, quindi 404. Se si dovrebbe sostenere che esistono per trasmettere un messaggio "No MORE data", quindi sono significativi, quindi devono essere indicizzati - incubo motore di ricerca!

HTTP 400 Bad Request è una scelta sbagliata perché suggerisce che la richiesta non può mai essere corretta.

HTTP 400 Bad Request - richiesta può non essere compresa dal server a causa di sintassi errata. Il client DOVREBBE NON ripetere la richiesta senza modifiche

404 Not Found è vaga su questo caso, e in questo caso può essere IMO interpretato in entrambe le direzioni

Il server non ha trovato corrispondenza nulla l'URI di richiesta. No indica se la condizione è temporanea o permanente. Il 410 di stato (finiti) Codice deve essere usato se il server sa, attraverso alcuni internamente configurabile meccanismo, che un vecchio risorsa è permanentemente disponibile e non ha alcun indirizzo inoltro. Questo codice di stato è comunemente usato quando il server non vuole rivelare esattamente il motivo per cui la richiesta è stata rifiutata, o quando nessun altra risposta è applicabile.

1

Sì, se è un'API, poiché gli errori 4xx indicano una mancanza temporanea di risorse, che potrebbe esistere in seguito. Se non è un'API, suggerirei che qualsiasi pagina 404 sia un po 'più user friendly (ad esempio http://www.didcot.com/forum/?read=1234567).

-1

Beh, non restituirei 404 perché viene trovata la pagina in generale (come display.php? Page = 62).

A mio parere, la soluzione migliore è comunicare all'utente "Numero pagina fuori intervallo/non disponibile" e un collegamento all'ultima pagina esistente o un collegamento history.back().

Codice HTTP 400 potrebbe essere la cosa che stai cercando.

+1

Si noti che i parametri di ricerca fanno parte della URI e la 404 si applica all'intero URI, non solo alla parte del percorso. Inoltre, 400 è probabilmente una cattiva scelta qui. –

+0

@Geoff è proprio qui su tutti i punti –

6

Direi che questo è assolutamente un caso per un 404. È una richiesta per una risorsa che non esiste. Indipendentemente dal fatto che la pagina o lo script generale utilizzati per visualizzare gli elementi sia irrilevante.

+0

Esempio borderline, la prima pagina e nessun dato nella lista. Dovrei mostrare 404? Per i risultati di ricerca non mi dispiacerebbe ... ma per questo caso è duro. Esempio: il primo giorno dell'esistenza di Overflow dello stack e non esistono ancora domande, hai colpito la home page e cosa, 404 o solo un 200 con messaggio "Ancora nessuna domanda"? –

+0

@Woo Direi che dipende un po 'dal tuo setup. Che tipo di URL sono in gioco? Come sono fisicamente? Che tipo di elenchi si interrogano? –

+0

Attualmente sto elencando gli insegnanti collegati a una voce shool e URL come ad es./Scuola/XXX/Insegnanti /? Page = Y –

0

Se è la tua querystring che indica quale pagina restituire, 404 potrebbe non essere appropriato. Se non è nella tua querystring, allora il documento non esiste e 404 è decisamente appropriato.

+0

Quindi l'URL è come/Scuola/XXX/Insegnanti /? Pagina = Y - quindi restituisce il soft 404, se/Scuola/XXX/Insegnanti/Pagina/Y/- quindi restituisce 404. Correggere? –

1

- quando l'utente naviga al di fuori dell'intervallo di elenco disponibile.

Non è necessario fornire un collegamento fuori intervallo. Nell'ultima pagina dei risultati, non mostrare un link 'successivo'. Beh, immagino che non lo stai facendo. Ma qualcun altro può collegarsi alla tua pagina fuori range, che ci porta una domanda interessante:

Come già detto, 404 dovrebbe essere restituito per risorsa inesistente. La vera domanda è: "Che cosa rende una risorsa?"

Direi che se il numero di risultati varia spesso (ad es. Giornalmente) e può anche diminuire (quindi la pagina n. 9 potrebbe esistere oggi ma non necessariamente domani), la funzionalità di ricerca/elenco nel suo insieme rende una risorsa , non singola pagina dei risultati, che rappresenta semplicemente uno stato particolare della risorsa.

Invece, se il numero di risultati può solo aumentare, cioè gli oggetti elencati non sono volitivi ma permanenti, ha senso mostrare 404 per le pagine fuori intervallo, poiché la pagina dei risultati esistente è più simile a una risorsa, cioè un documento destinato a rimanere lì.

Generalmente, penso che non ci sia una risposta universale ma la decisione spetta al webmaster, perché non esiste una specifica abbastanza chiara. Si dovrebbe ricordare che i codici di stato vengono restituiti principalmente per i clienti non umani (robot, motori di ricerca) che non sono in grado di comprendere il contenuto della pagina, quindi in pratica si tratta principalmente di un problema di SEO.

Solo per citare, out-of-range pagine dei risultati sono dati uno statuto 200 da Google: (. Non che Google è un dio)

$ curl -s --head -A 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; fi-fi) AppleWebKit/531.21.11 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10' 'http://www.google.com/search?q=stackoverflow&start=1000' | grep ^HTTP 
HTTP/1.1 200 OK 
+0

Sono d'accordo che è una preferenza, ei robot sono qui il fattore decisivo, cioè sono a favore di 404. Ma poiché non dovrebbero esserci collegamenti fuori range 404 non farebbe male a nessun robot. Anche in questo caso, se l'utente è un URL di modifica manuale, non è necessario attenuarli :) ... ehhh, lancio una moneta. –

Problemi correlati