shutterstock_398314630

Korrekte 404-Fehlerseiten mit CoolURI

Prinzipiell sollte immer dann eine 404-Fehlermeldung erscheinen, wenn der Server eine Seite nicht finden kann. Das bedeutet, dass zwar die Kommunikation zwischen Server und Client fehlerfrei vonstatten geht, jedoch die gewünschte Ressource nicht verfügbar ist. Grund dafür könnte sein, dass die angefragte Seite verschoben oder gelöscht wurde bzw. nicht existiert.
Man hat sich soeben in eine virtuelle Sackgasse manövriert. Und nun?

Beim Erstellen einer eigenen 404-Fehlerseite sollte man auf die Benutzerfreundlichkeit (Usability) achten. Auf der Seite selbst sollte idealerweise kurz erklärt werden, warum es zu diesem Ergebnis kam. Beispielsweise könnte man eine Sitemap, weitere Links und/oder eine Suchfunktion anbieten, sodass man das Interesse des Benutzers nicht auf Anhieb verliert.

Nachfolgend habe ich die 3 möglichen Verfahrenstypen von CoolURI bei einer ungültigen URL aufgelistet.

(a) type = „message“

<pagenotfound>
<status>HTTP/1.0 404 Not Found</status>
<behavior type="message"><![CDATA[<h1>Page not found</h1>]]></behavior>
</pagenotfound>

Es wird eine Nachricht ausgegeben. Die Adresszeile des Browsers ändert sich dabei nicht. Der Statuscode „404 not found“ wird korrekt zurückgegeben.


(b) type = „redirect“

<pagenotfound>
<status>HTTP/1.0 404 Not Found</status>
<behavior type="redirect">http://www.domain.de/index.php?id=243</behavior>
</pagenotfound>

Weiterleitung zu einer anderen Seite. Dies resultiert letztendlich in einen „302 Found“ Statuscode. Die Adresszeile ändert sich in die angegebene Ziel-URL.
Wikipedia sagt zu „302„:
„Die angeforderte Ressource steht vorübergehend unter der im „Location“-Header-Feld angegebenen Adresse bereit. Die alte Adresse bleibt gültig. Wird in HTTP/1.1 je nach Anwendungsfall durch die Statuscodes 303 bzw. 307 ersetzt.
302-Weiterleitung ist aufgrund eines Suchmaschinen-Fehlers, dem URL-Hijacking, in Kritik geraten. Webmaster sollten von der Verwendung eines solchen Redirects absehen, wenn sie auf fremde Inhalte weiterleiten.“


(c) type = „page“

<pagenotfound>
<status>HTTP/1.0 404 Not Found</status>
<behavior type="page">http://www.domain.de/index.php?id=243</behavior>
</pagenotfound>

Wenn eine angefragte Seite nicht existiert, wird per file_get_contents Inhalt einer anderen Seite angezeigt. Dabei bleibt die fehlerhafte URL in der Adresszeile des Browsers erhalten und der Statuscode „404 not found“ wird korrekt zurückgegeben.

ACHTUNG
Bei den Varianten „redirect“ und „page“ sollte darauf geachtet werden, dass es sich um eine Parameterangabe der UID der jeweiligen Seite handelt. Denn es kann problematisch werden, wenn man eine sprechende URL angibt, die nicht im Cache von CoolURI liegt. Daraus kann eine Endlosschleife resultieren, bei der CoolURI versucht, die sprechende URL aufzulösen und nicht findet, wiederum auflöst usw. Der Browser meldet beispielsweise: „Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.“

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

Benachrichtige mich zu:
avatar

wpDiscuz
Weitere Beiträge zum Thema
Ant für Eclipse 3.6 Helios
Conversion Experte Karsten Wesch beim 17. E-Commerce Stammtisch
Vorsicht bei der Verwendung von isset() mit Arrays
Und ein weiterer neuer Auszubildender in unseren Reihen: Jonas Leonhardt