2010-03-31 4 views
8

Ich habe eine Website, die hauptsächlich eine ausgelagerte Liste von Inhalten (Artikel, Datenelemente usw.) zeigt, und ich frage mich, ob HTTP 404 zurückgegeben wird, wenn der Benutzer außerhalb des verfügbaren Listenbereichs navigiert (z. B. durch hand editierte URL)).Ist HTTP 404 für Seitennummer außerhalb des Bereichs bei ausgelagertem Inhalt geeignet?

Einige Websites zeigen nur "Keine Ergebnisse/Seitennummer außerhalb des Bereichs" an und einige Rückgaben geben zusätzlich den HTTP 404-Status zurück.

Was ist Ihre Meinung dazu, und warum?

UPDATE

Es ist nicht und api Antwort. Diese Frage bezieht sich auf Benutzer angesehene Seiten, die unter anderem eine Liste/Tabelle im Hauptbereich anzeigen.

UPDATE

Borderline Beispiel: 1'st Seite ist eine Seite, out-of-Bereich, da keine Daten für die gezeigte Liste noch vorhanden ist.

Soll ich 404 anzeigen? Wenn es Suchergebnis ist, würde ich nichts dagegen haben ... aber für die einfache Anzeige der Auslagerungsliste/Datentabelle scheint hart.

Beispiel: der erste Tag von Stack Overflow ausgeführt und noch keine Fragen vorhanden sind, drücken Sie die Homepage und was, 404 oder nur eine 200 mit "Noch keine Fragen" Nachricht?

Antwort

0

Ich würde für 404 gehen, wenn Seitennummer! = 1, unabhängig davon, wo die Seitenzahl in der URI (Query-String oder im Pfad) gegeben, und geht für die soft 404, wenn es keine Ergebnisse gibt aber Seite Nummer ist genau 1 oder nicht gegeben.

Warum?

Die Ergebnismenge Seite 1 existiert als Zielseite für die Ergebnismenge (even search results -- see Google here), so dass sie gefunden wird und existiert (falls nicht zur Ergebnismenge), um zu sagen, dass keine Daten in der Ergebnismenge enthalten sind.

Dann wird keine Ergebnismenge der Seitenzahl außerhalb des Ergebnismengenbereichs gefunden, es gibt keinen sinnvollen Punkt für diese Seite/Ressourcen, daher 404. Wenn man argumentieren sollte, dass sie existieren, um eine Nachricht "Keine weiteren Daten" zu übermitteln, daher sind sie sinnvoll und müssen daher indexiert werden - Suchmaschinen-Albtraum!

HTTP 400 Bad Request ist schlechte Wahl, weil es vorschlagen würde, dass Anfrage nie richtig sein kann.

HTTP 400 Bad Request - Anfrage konnte nicht vom Server aufgrund fehlerhafte Syntax zu verstehen. Der Kunde soll wiederholt die Anforderung nicht ohne Änderungen

404 Not Found ist vage über diesen Fall, und in diesem Fall kann IMO in beiden Richtungen interpretiert werden

Der Server nichts passende gefunden hat die Anfrage-URI. No wird angezeigt, ob der Zustand vorübergehend ist oder permanent ist. Die 410 (Vorbei) Statuscode sollte verwendet werden, wenn der Server weiß, durch einige intern konfigurierbare Mechanismus, dass eine alte Ressource dauerhaft nicht verfügbar ist und keine Nachsendeadresse. Dieser Status Code wird häufig verwendet, wenn der Server nicht genau enthüllen will, warum die Anfrage abgelehnt wurde, oder , wenn keine andere Antwort anwendbar ist.

1

Ja, wenn es sich um eine API handelt, da 4xx-Fehler auf einen vorübergehenden Mangel an Ressourcen hindeuten, der später möglicherweise besteht. Wenn es keine API ist, würde ich vorschlagen, dass jede 404-Seite ein wenig benutzerfreundlicher ist (z.B. wie http://www.didcot.com/forum/?read=1234567).

-1

Nun, ich würde 404 nicht zurückgeben, weil die Seite im Allgemeinen gefunden wird (wie display.php? Page = 62).

Meiner Meinung nach ist die beste Lösung, dem Benutzer "Seitennummer außerhalb des Bereichs/nicht verfügbar" und einen Link zur letzten vorhandenen Seite oder einen history.back() -Link mitzuteilen.

HTTP-Code 400 kann das sein, was Sie suchen.

+1

Beachten Sie, dass der Abfrage-Parameter Teil der URI ist und die 404 gilt für den gesamten URI, nicht nur für den Pfadteil. Auch 400 ist wahrscheinlich eine schlechte Wahl hier. –

+0

@Geoff ist genau hier in allen Punkten –

6

Ich würde sagen, das ist absolut ein Fall für eine 404. Es ist eine Anfrage für eine Ressource, die nicht existiert. Ob die allgemeine Seite/das Skript zum Anzeigen der Elemente irrelevant ist.

+0

Borderline Beispiel, 1. Seite und keine Daten in der Liste. Soll ich 404 zeigen? Für Suchergebniss hätte ich nichts dagegen ... aber für diesen Fall ist es hart. Beispiel: der erste Tag von Stack Overflow Existenz und noch keine Fragen vorhanden sind, traf man die Homepage und was, 404 oder nur eine 200 mit "Noch keine Fragen" Nachricht? –

+0

@Woo Ich würde sagen, das hängt ein bisschen von Ihrer Einrichtung ab. Welche Art von URLs sind im Spiel? Wie sehen Sie aus? Welche Art von Listen fragen sie ab? –

+0

Zur Zeit liste ich Lehrer auf, die an einen Shool-Eintrag angehängt sind, und URL wie zB./Schule/XXX/Lehrer /? Seite = Y –

0

Wenn es Ihr Querystring ist, der angibt, welche Seite zurückgegeben werden soll, ist 404 möglicherweise nicht geeignet. Wenn es nicht in Ihrer Querystring ist, dann ist das Dokument nicht vorhanden und 404 ist definitiv geeignet.

+0

Also URL ist wie/Schule/XXX/Lehrer /? Seite = Y - dann weichen 404, wenn/Schule/XXX/Lehrer/Seite/Y/- dann 404 zurück. Richtig? –

1

- wenn der Benutzer außerhalb des verfügbaren Listenbereichs navigiert.

Sie sollten keine Verbindung außerhalb des zulässigen Bereichs bereitstellen. Zeigen Sie auf der letzten Seite der Ergebnisse keinen "nächsten" Link an. Nun, ich denke du machst das nicht. Aber jemand anders kann sich mit Ihrer Out-of-Range-Seite verbinden, was uns interessante Fragen bringt:

Wie bereits gesagt, 404 sollte für nicht existierende Ressource zurückgegeben werden. Die eigentliche Frage ist: "Was macht eine Ressource?"

Ich würde sagen, dass, wenn die Anzahl der Ergebnisse oft variiert (zB täglich) und auch abnehmen kann (so dass Ergebnis Seite 9 heute aber nicht unbedingt morgen existiert), die Listungs-/Suchfunktionalität als Ganzes eine Ressource bildet , nicht einzelne Ergebnisseite, die lediglich einen bestimmten Zustand der Ressource darstellt.

Wenn die Anzahl der Ergebnisse nur erhöht werden kann, dh wenn die aufgelisteten Objekte nicht flüchtig sondern dauerhaft sind, ist es sinnvoll, 404 für Seiten außerhalb des Bereichs anzuzeigen, da die vorhandene Ergebnisseite eher eine Ressource ist. dh das Dokument sollte dort bleiben.

Im Allgemeinen denke ich, dass es keine universelle Antwort gibt, aber die Entscheidung liegt beim Webmaster, weil keine klare Spezifikation existiert. Man sollte nicht vergessen, dass Statuscodes in erster Linie für nicht-menschliche Kunden (Roboter, Suchmaschinen) zurückgegeben werden, die den Inhalt der Seite nicht verstehen können. In der Praxis handelt es sich also meistens um ein SEO-Problem.

nur zu erwähnen, Out-of-Range-Seiten einen Status 200 durch Google gegeben: (. Nicht, dass Google ist ein Gott)

$ 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

Ich stimme zu, es ist eine Vorliebe, und Roboter sind hier der entscheidende Faktor, das bin ich für 404. Aber da es keine Out-of-Range-Links geben sollte, würde der weiche 404 keinem Roboter schaden. Auch wenn der Benutzer die URL manuell bearbeitet, müssen wir nicht weich auf sie gehen :) ... ehhh, ich drehe eine Münze. –