Softfehler 404 in Joomla! 2.5 vermeiden - Softfehler in Google Webmaster Tools

Seit der Umstellung auf Joomla! 2.5 hatte ich plötzlich einen rasanten Anstieg an Softfehlern in der Crawling-Fehler Übersicht der Webmaster Tools Zentrale:

Softfehler 404 - bei Google Webmaster Tools

Dieser Fehler kommt zustande, wenn der Server beim Aufruf von nicht-existierenden Seiten einen falschen Fehlercode zurückliefert. Ich habe mit Hilfe von Web-Sniffer (http://web-sniffer.net/) einen Aufruf gemacht und konnte mich überzeugen, dass Google recht hat. Der Server liefert einen 200er Code (Status OK), obwohl die aufgerufene URL nicht existiert:

Web-Sniffer liefert Status 200 bei nicht existierender Seite

Ruft man die Seite im Frontend auf, dann erscheint auch nicht die typische Status 404 - Meldung, sondern der Text:

Beitrag nicht gefunden
Es ist nicht erlaubt diese Ressource einzusehen!

Beitrag nicht gefunden - Es ist nicht erlaubt diese Ressource einzusehen

Nach einer Recherche im Internet und einigen Tests in meiner lokalen Serverumgebung, habe ich das Problem ausfindig machen können. Aufgrund des Umstiegs und der damit verbundenen Änderungen der URL Struktur, hatte ich das System Plugin "Redirect" deaktiviert, da sich die Datenbank innerhalb von einem Tag mit über 5000 falsch aufgerufener Seiten gefüllt hat. Dabei war mir nicht bewusst, dass dadurch die korrekte Status-Ausgabe 404 nicht mehr möglich ist und vor allem die error.php im Templateverzeichnis nicht aufgerufen wird.

Sobald das Redirect-Plugin aktiviert ist, liefert der Server auch den korrekten 404 Statusfehler zurück:

Web Sniffer - korrekte Statusmeldung 404

Nun werden falsche Aufrufe korrekt auf die error.php umgeleitet und man kann die Ausgabe in der error.php nach eigener Vorstellung anpassen.

Hinweis: Wenn sich keine Datei mit dem Namen error.php im Ordner des gewählten Templates befindet, dann wird diese im Template-Ordner templates/system/ aufgerufen.

Ich habe zusätzlich alle Hauptmenüpunkte eingebaut, damit man bei so einem Aufruf schnell navigieren kann:

Angepasste 404 Fehlerseite - error.php

Tipp: Keine Speicherung von falsch aufgerufenen Seiten im System Plugin Redirect

Leider gibt es keine Option, die Speicherung der Aufrufe zu deaktivieren. Das ist jedoch mit einem kleinen Hack sehr einfach möglich.

Öffne:

plugins/system/redirect/redirect.php

Suche:

// Make sure the error is a 404 and we are not in the administrator.
if (!$app->isAdmin() and ($error->getCode() == 404))
{

Füge drunter in eine neue Zeile hinzu:

JError::customErrorPage($error);

So sollte es aussehen:

// Make sure the error is a 404 and we are not in the administrator.
if (!$app->isAdmin() and ($error->getCode() == 404))
{
    JError::customErrorPage($error);

So werden fehlerhafte Aufrufe direkt ohne Speicherung in die Datenbank auf die korrekte 404 Fehlerseite umgeleitet.

Achtung: Wie bei jedem Hack sollte vorher eine Sicherheitskopie angefertigt werden und bei einem Update könnten die Änderungen verloren gehen.