AdWz WP-Plugin 7 – 404 Not Found

(AdWz; Auf dem Weg zum) WP-Plugin 7 – 404 Not Found

Der „Hack“ über die „index.php“ (siehe WordPress NoRewrite & 404) und das Plugin „mg404Rewrite“ (siehe AdWz WP-Plugin 5 – 200 OK) überschreibt den HTTP-Header immer mit dem erfolgreichem HTTP-Code 200 OK. Nicht wirklich gut für die Robots der Suchmaschinen.

Sollte unter der Domäne entfernte Seiten vorhanden gewesen sein, sind diese unter Umständen noch im Index der Suchmaschinen enthalten. Die Robots werden auch bei älteren Links zu nicht mehr vorhandenen Seiten keinen HTTP-Code 404 erhalten. Diese Referenzen werden aus dem Index der Suchmaschine nicht entfernt.

Das Plugin soll in der nächsten Version exklusiv HTTP-Code 200 OK ausliefern, wenn die Seite vorhanden ist.

mg404Rewrite hat die Funktion „sendHTTPCode“ an die Aktion „template_redirect“ angemeldet. Die Anfrage wurde intern von WordPress verarbeitet und stellt Information über Conditional Tags zur Verfügung. Eine Anfrage zu einer nicht vorhandenen Seite kann über die Bedingung is_404() geprüft weden. Die WordPress-Funktion is_404() liefert true zurück, sollte die Anfrage nicht beantwortet werden können. Sollte die Referenz vorhanden sein, ist das Ergebnis der Funktion false.

Eine kleine Erweiterung für das Plugin, um auf referenzlose Anfragen richtig reagieren zu können.

function sendHTTPCode () {
   if (!is_404())
      header("Status: 200 OK");
}

mg404Rewrite Version 0.2

Installation:

Die heruntergeladene Datei in das Verzeichnis $WP_HOME/wp-content/plugins/ entpacken und über die Plugin-Verwaltungsseite aktivieren. Manuell muss noch die Datei „.htaccess“ angepasst (WordPress NoRewriteWorkaround) und bei geänderter „index.php“ die Zeile mit „header …) entfernt werden.

Das Plugin funktioniert mit der WordPress Version 2.2.3 beim Provider Strato (www.strato.de).

Tags: , ,

4 Antworten zu “AdWz WP-Plugin 7 – 404 Not Found”

  1. Putzlowitsch sagt:

    Die Idee ist gut, aber es gibt noch ein paar kleinere Probleme mit dem 404er-Trick.
    Trackbacks funktionieren so nicht, weil der Apache-Server keine POST-Daten an Fehlerseiten weitergibt.
    Redirects und das „Conditional GET“ (bei Feeds) müssen noch gesondert behandelt werden.
    Generell funktionieren so Sachen wie Kontaktformulare und ähnliches nicht, sofern sie die POST-Daten an Permalinkseiten senden. Da gibt es leider auch keinen Ausweg, POST-Daten kommen bei Fehlerseiten einfach nicht an.

    Gruß
    Ingo

  2. mgsimon sagt:

    Gesendete Daten über Post und bedingte Anfragen bei Feeds kann ich nachvollziehen. Aber welches Problem besteht bei einer Weiterleitung und wann wird eine Weiterleitung benötigt?

  3. Putzlowitsch sagt:

    Na klick mal z.B. auf den Trachback-Link hier oben. Normalerweise wirst Du da wieder auf die selbe Seite weitergeleitet. Hier kommt aber ein 200 OK, und ein Link auf die Weiterleitung. Das ist zumindest nicht HTTP-Konform.
    Ich habe mich übrigens auch schon eine Weile mit WordPress bei Strato beschäftigt und in meinem Plugin zumindest alle Probelem gelöst, die zu lösbar sind :-) (hoffe ich zumindest)

    Gruß
    Ingo

  4. mgsimon sagt:

    Ups, die Trackback-Links hatte ich übersehen. Vielen Dank für die Hinweise.

Hinterlasse eine Antwort