404 Header mit PHP und mod_rewrite

30. Dezember 2011  |  Kommentar schreiben   |  Tags: , ,



Bei Facebook teilen

Wenn Sie sicherstellen wollen, dass Seiten aus dem Index einer Suchmaschine schnellstens entfernt werden, so sollten diese Seiten als – 404 nicht gefunden – dargestellt werden. Es ist aber hier ganz wichtig zu bemerken, dass es nicht ausreicht, dass Sie zu Ihrer Custom 404 Seite einfach weiterleiten, sondern dass Sie auch einen korrekten 404 Header als erstes liefern. Wenn aber der Apache mod_rewrite benutzt wird, so werden unter Umständen nicht existierende Seiten zu der Startseite weitergeleitet. Im schlimmsten Fall geschieht dies durch eine 302-er Weiterleitung, was Sie unbedingt meiden wollen, wenn Sie eine gute Suchmaschinenoptimierung für Ihre Webseite hinbekommen wollen.

Heute betrachten wir den Fall wie Sie trotz mod_rewrite einen 404 Header mit PHP liefern können und somit Google-gerecht handeln.

Problematik

Sie haben eine angepasste 404 Seite und Sie möchten diese statt der Startseite zeigen, wenn eine Seite aufgerufen wird, die Sie gerne als 404 bezeichnen wollen? Sie bekommen für nicht existierende URLs immer die Startseite? Lesen Sie weiter wie Sie dies nun lösen können.

Grundsätzliche Regeln

Wenn Sie eine 404-er Seite mit PHP und mod_rewrite ordnungsgemäß programmieren wollen, so müssen Sie folgendes beachten:

  •  Keine Weiterleitung zu Ihrer Custom 404 Seite – dies ist keinesfalls möglich, denn durch die Weiterleitung wird der Header mit einem Redirect Code zurückgeben (301, 302). Das heißt, dass beim Aufruf der fehlenden Seite keine Weiterleitung stattfinden darf, insbesondere wenn Sie den 404 Header zurückgegeben haben und somit die Ausgabe der Seite gestartet haben.
  • Erkennung der Seite, die nicht gefunden werden soll – bevor Sie die URL der Seite analysieren, die aufgerufen wird, sollten Sie erkennen können, dass diese Seite einen Header 404 zurückgeben soll. Wenn Sie die Seite rechtzeitig erkennen können (bevor jegliche Ausgabe auf dem Browser erfolgt ist), so können Sie noch entscheiden welche Header und welchen Inhalt Sie zeigen. Vielleicht würden Sie einen Suchmuster in der URL erkennen können oder Sie fragen Ihre Datenbank einfach ab, ob die Seite existiert.
  • Angepasste 404 Seite – Sie müssen eine angepasste 404 Seite in Ihrem CMS/Internetauftritt angelegt haben, wo Sie am besten zu ähnlichen Inhalten weiterleiten können. Diese Seite sollte sich schon von den übrigen Seiten Ihres Internetauftritts unterscheiden. Angenommen diese Seite hat folgende URL – Ihre_404.html.

Lösung – 404 Header mit mod_rewrite

Wenn Sie PHP und mod_rewrite einsetzen, ist es sehr wahrscheinlich, dass Sie eine Funktion zur Dekodierung der URL haben. Angenommen diese heißt DecodeURL(). So können Sie nun vorgehen:

if (Prüfung, ob Seite nicht existiert) {
header( "HTTP/1.0 404 Not Found" );
$_SERVER['REQUEST_URI'] = "/Ihre_404.html";
}

DecodeURL();

Was passiert hier?

  • Es wird geprüft, ob für die jetzige Seite einen Header 404 zurückgegeben werden soll
  • Der 404 Header wird als erstes zurückgegeben
  • Die URL der aufgerufenen Seite wird dynamisch geändert, als hätten Sie Ihre Custom 404 Seite aufgerufen
  • Sie schreiten nun mit der Dekodierung der URL fort – Sie sehen die 404-er Seite und der Besucher (egal ob Suchmaschine oder Benutzer) weißt Bescheid

Fazit

Einen 404 Header zu liefern ist äußerst wichtig für die Erfahrung, die Ihre Besucher auf Ihre Seite machen. Sie dürfen nicht bei nicht existierenden Inhalten einfach zu der Startseite weiterleiten, denn Sie werden dadurch Ihre Besucher nur frustrieren. Die Anpassungen in dem Index der Suchmaschinen wird auch mit einer Weiterleitung viel langsamer erfolgen und Sie wollen ja, dass Sie aktuelle Inhalte indexiert werden.

Wenn Sie Hilfe bei dieser Umstellung benötigen, so stehen wir Ihnen gerne zur Verfügung. Wir bieten professionelle CMS Lösungen, wo diese Aspekte der Suchmaschinenoptimierung und der Benutzererfahrung bereits berücksichtigt sind – schauen Sie sich einfach unsere Produkte an.

Teilen

Hinterlasse eine Antwort

Du musst angemeldet sein, um einen Kommentar abzugeben.