Moin!
Was sollte man tun, wenn eine Seite (in dem Fall mit GET-Parameter-Ids) angefordert wird, die es nicht gibt?
Die Frage hat zwei Aspekte:
1. Welchen HTTP-Status sendet man?
2. Welchen Seiteninhalt liefert man mit?
- Nur einen 404 header senden und eine Seite ausgeben mit "gibts nicht"? Einfach davon ausgehen, dass ein User solche Seiten garnicht erst sehen sollte.
- Zu einer Suchseite mit header 404 umleiten und hier sagen "gibts nicht" und gleich nach den Parametern innerhalb des eigenen Webauftritts suchen? Hierbei wäre wenigstens kein Inhalt unter der falschen Url, also am besten eigtl noch einen 410 dann umleiten und dann 404 Suchseite?
- rechenaufwendige Ratespiele spielen und dem User auf eine mögliche Seite leiten?
Wenn du dem abrufenden Client mitteilen willst: "Die Seite gab es mal, aber die ist jetzt weg", dann sende Status "410 Gone".
Wenn du mitteilen willst: "Die Seite gibts nicht, du hast irgendwas falsch gemacht", dann sende Status "404 Not found".
Wenn du mitteilen willst: "Die Seite, die du willst, hat eine andere URL", dann sende Status "301 Moved permanently".
Und eventuell willst du auch sagen: "Die Seite, die du willst, gibts in dem Sinne wohl noch nicht, guck zwischenzeitlich mal diese andere URL an.", dann sende Status "302 Found".
Bei genauerer Betrachtung kommt eigentlich nur Status 404 für die allermeisten Situationen in Frage. Status 410 und 301 sind nur sinnvoll bei Seiten, die es früher mal gegeben hat - der eine für entfernte Seiten, der andere für Seiten, die jetzt eine neue URL haben (obwohl man sowas eigentlich vermeiden sollte, URLs sollen ewig gültig bleiben).
Bleiben nur noch 404 und 302. Temporäre Redirects sorgen dafür, dass Suchmaschinen die tatsächliche URL als gültig registrieren könnten - das will man auch nicht. Bleibt als einzig sinnvoller Status eben 404.
Davon unabhängig kann die mit dem Status mitgelieferte Seite ja gerne hilfreiche Informationen geben, auf welche Weise man die vermeintlich gewünschte Information dennoch erhalten könnte.
- Sven Rautenberg
"Love your nation - respect the others."