Kann ein HTTP-Status 400 einen 410 ersetzen?

7

Als ich viele URLs auf meiner Website von "nicht freundlich" auf "freundlich" verschob, stieß ich auf eine alte URL, die zum Testen verwendet wurde. Google scannte später, aber jetzt verwende ich die URL nicht mehr. Es ist in der unfreundlichen Form wie folgt:

http://example.com/something.php?something=something&

In der Vergangenheit stimmte diese URL mit einer anderen auf meiner Website überein. Um sie zu korrigieren, musste ich den Statuscode ändern (und dafür sorgen, dass die URL keine tatsächliche Webseite zurückgibt). Zuerst dachte ich, ich würde den Code 410 verwenden, um anzuzeigen, dass ich zu Google gegangen bin, aber jetzt dachte ich, dass der http-Status 400 besser ist, weil alle meine anderen "sauberen" URLs niemals einen enthalten &und der http-Status 400 für eine fehlerhafte Anfrage steht.

Ist das eine akzeptable Praxis? oder sollte ich es einfach in den http status 410 konvertieren? Was würden Suchmaschinen von dieser Praxis halten? (Ich versuche hier nur, Standards zu folgen)

Mike
quelle
Wäre ein 301 (permanent verschoben) nicht http://example.com/something.php?something=somethingnützlich? Oder gibt es das auch nicht?
Hagen von Eitzen
Ja und nein, da einige URLs (insbesondere unfreundliche), die einmal existierten, nicht mehr existieren.
Mike

Antworten:

27

Warum 410 weg?

Da die Seite einmal existiert hat, ist die korrekte Rückgabe des Header-Status 410 weg . Dies informiert Google und andere Suchmaschinen, die Seite aus ihrem Index zu löschen. Sie sollten die Verwendung einer fehlerhaften Anforderung mit dem Status 400 vermeiden, da dies impliziert, dass der Server die Anforderung aufgrund einer fehlerhaften Syntax nicht verstanden hat. Die Verwendung unerwünschter Statuscodes füllt Ihre Fehlerprotokolle und kann die Fehlersuche bei tatsächlichen Problemen erschweren.

Was ist mit 404?

Die Verwendung eines 404- oder 410-Status wird jedoch als in Ordnung angesehen. Wenn Sie wissen, dass die Seite nie wieder angezeigt wird, verwenden Sie am besten einen 410-Status. Google hat gesagt, dass sie das Ergebnis von 404 und 410 gleich behandeln, aber das 410 wird schneller fallen gelassen , da 404 auftreten können, wenn es nicht beabsichtigt ist.

Simon Hayter
quelle
5
+1, vereinbart. Eine Antwort " 404 nicht gefunden " wäre auch hier eine gültige Wahl.
Ilmari Karonen
@IlmariKaronen "Gone" unterscheidet sich von "Not Found".
Anubian Noob
2
@AnubianNoob: "Gone" ist genauer gesagt eine Teilmenge von "Not Found"; Wenn es weg ist, ist es nicht mehr da, um gefunden zu werden. In der Tat wurde der 410 Gone-Statuscode in HTTP / 1.1 im Grunde genommen als spezifischere und nachdrücklichere Version von 404 hinzugefügt, damit Server explizit darauf hinweisen können, dass eine zuvor gültige Ressource absichtlich und dauerhaft entfernt wurde (anstatt beispielsweise nur versehentlich zu sein) oder vorübergehend unzugänglich).
Ilmari Karonen
@IlmariKaronen stimmt, aber Administratoren bevorzugen möglicherweise 410er, weil sie schneller als 404er fallen.
Simon Hayter
15

Offiziell ja. Jeder 4xx-Status kann als 400 interpretiert werden. Gleiches gilt für die anderen Statusgruppen. (Beispielsweise kann ein nicht verfügbarer 503-Dienstfehler als 500 interner Serverfehler interpretiert werden.)

Der RFC ist so geschrieben, dass Implementierungen möglich sind, die möglicherweise nicht jeden Status unterstützen, und dass zusätzliche Statuscodes definiert werden können, ohne die Abwärtskompatibilität zu beeinträchtigen.

Ja, Sie können 400 anstelle von 410 verwenden. Sie sollten jedoch den genauesten verfügbaren Status verwenden, um den aktuellen Status zu beschreiben. Wenn die Ressource weg ist, nie wieder zurückkommt und (nach Ihrem Wissen) nirgendwo anders zu finden ist, ist 410 der entsprechende Status. Ich würde wahrscheinlich 404 vor 400 verwenden.

Die Referenz für dieses Verhalten ist RFC 7231 (HTTP 1.1: Semantik und Inhalt), Abschnitt 6 . (Beachten Sie, dass RFC 7231 und andere RFC 2616 ersetzen .)

Calrion
quelle
2

Eine fehlerhafte Anfrage bedeutet nicht "eine URL, für die Sie keine Ressource haben". Es bedeutet eine fehlerhafte Anfrage. HTTP 400 ist hier definitiv falsch.

HTTP 410 funktioniert gut, da es anzeigt, dass eine zuvor zugängliche Ressource nicht mehr verfügbar ist.

Ihre Alternative wäre, wie andere bereits erwähnt haben, eine 404.

Leichtigkeitsrennen im Orbit
quelle