Eine 404 Fehlerseite an Google senden die wirklich funktioniert

Sie möchten einen alten Artikel aus dem Google-Index entfernen dann sollten Sie vorher diesen Beitrag lesen

Juli 5, 2023 - Lesezeit: 7 Minuten

Inhalt

Das Problem mit 404 Seiten

Das Problem ist hinlänglich bekannt, ein gut rankender Beitrag wurde von der Webseite entfernt oder verschoben und in Folge dessen, leidet das Ranking bei Google. Der Grund dafür ist, das Google (trotzt korrekter sitemap.xml) nach wie vor versucht, den Beitrag zu rufen und ihn natürlich in seinen Suchergebnissen gelistet hat und genau da muss er nun daherhaft raus. Für dieses Ziel existieren unterschiedliche Methoden, die unterschiedlich erfolgreich sind.

Zwar erkennt Google durchaus, das ein Beitrag von der Webseite gelöscht ist aber auf Grund der Tatsache, das der Beitragslink auch in externen Webseiten (weil der Beitrag woanders verlinkt ist) noch gefunden wird, nimmt Google diesen erneut in den Suchindex wieder auf.

RedirectPermanent - den Beitrag dauerhaft verschieben

Mit der Anweisung RedirectPermanent kann der Suchmaschine mitgeteilt werden, das ein Beitrag dauerhaft an einen neuen Platz verschoben wurde, in etwa so:

RedirectPermanent /thema-alt/beitrag-alt    https://www.domain.de/thema-neu/beitrag-neu

Diese Anweisung soll in der Datei .htaccess auf dem Server eingebaut werden, damit der Server den URI Request sofort umleiten kann und der Suchmaschine einen Returncode 301 zurückgibt.

Auch wenn dies gut funktioniert, gibt es ein Problem. Bei sehr alten Webseiten mit hoher externer Verlinkung verschwinden alte Links aus der Google-Suche nicht und halten sich hartnäckig. Der Grund wurde bereits oben aufgeführt - es sind alte, externe Links die Google und co auf anderen Webseiten findet und folglich diesen Link erneut in den Index aufnimmt.

Diese Technik funktioniert bei kleinen Webseiten mit geringem Beitragsvolumen ziemlich gut und ist auch von Google bevorzugt. Bei sehr großen Webseiten ist jedoch manchmal nicht ganz klar von wo eine alte Bildsource oder Beitrag, in eine neue Source übergeht und die Weiterleitung wird schwierig.

HTTP 404 oder 410 Error Seite senden

Für die ganz hartnäckigen Fälle ist es ratsam eine eigene 404 (nicht gefunden) oder 410 (Entfernt) Fehlerseite dem Aufrufer zu senden, um unmißverständlich klar zu machen, das es diesen Beitrag nicht mehr gibt. Die ganze Sache wird schwierig wenn unterschiedliche CMS verwendet werden und 404 oder 410 Errors unterschiedlich behandelt werden, daher macht es mehr Sinn ein eigenes kleines PHP-Script zu erstellen, das in allen CMS oder Webseiten funktionieren kann.

Zunächst ein korrekter Codeschnipsel zum senden eines 404 an den Aufrufer:

... <?php
...    ...
...    header("HTTP/1.1 404");
...    echo '<?xml version="1.0" encoding="iso-8859-1">';
...    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
...    echo '<html xmlns="https://www.w3.org/1999/xhtml">';
...    echo '<head>';
...    echo '<meta name="robots" content="noindex, follow" />';
...    echo '</head>';
...    echo '<body>';
...    echo '<h1>Error 404</h1>';
...    echo '<p>Der Beitrag wurde gelöscht, bzw. die Suchmaschine wurde mit einem Error 404 angewiesen, diesen Beitrag aus dem Index dauerhaft zu entfernen.</p>';
...    echo '<hr>';
...    echo '&copy by Administrator';
...    echo '</body>';
...    echo '</html>';
...    exit;
...    ...
... ?>

Beispielcode einer 404 Fehlerseite

Senden von header("HTTP/1.1 404")

Die Header-Anweisung, senden den gewünschten Fehlercode an den Aufrufer zurück, also Google oder Bing. Der Code signalisiert der Suchmaschine, das der Beitrag nicht gefunden wurde. Alternativ kann auch ein 410 Error gesendet werden, der anzeigt, das die Seite entfernt wurde - beide Varianten werden laut Google-Doku (https://support.google.com/webmasters/answer/9689846#make_permanent ) unterstützt und bevorzugt.

Setzen von noindex für Robots

Darüber hinaus ist es sehr wichtig, das noindex Tag für die meta-Angabe robots korrekt zu setzen, denn die Suchmaschine muss angewiesen werden, die Seite aus dem Index zu streichen.

Der Rest des Codeschnipsels ist im wesentlichen obligatorischer HTML-Code, der nach belieben verschönert werden kann.

Gelöschte Beitrag mit Error 404 oder 410 abfangen

Das oben gezeigte Codeschnipsel muss nur noch sinnvoll in ein Script eingebaut werden, um konkrete Beiträge mit der Error 404 oder der Error 410 Seite abzufangen. Es könnte etwa so aussehen:

...
... $content = explode("\n", file_get_contents("liste-geloeschter-beitraege.txt"));
...
... if (in_array($_SERVER['REQUEST_URI'], $content)) 
... {
...    file_put_contents("logfile.txt", $_SERVER['REQUEST_URI']).' - '.$_SERVER['HTTP_USER_AGENT']."\n", FILE_APPEND | LOCK_EX)!==false;
...
...    header("HTTP/1.1 404");
...    echo '<?xml version="1.0" encoding="iso-8859-1">';
...    echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
...    echo '<html xmlns="https://www.w3.org/1999/xhtml">';
...    echo '<head>';
...    echo '<meta name="robots" content="noindex, follow" />';
...    echo '</head>';
...    echo '<body>';
...    echo '<h1>Error 404</h1>';
...    echo '<p>Der Beitrag wurde gelöscht, bzw. die Suchmaschine wurde mit einem Error 404 angewiesen, diesen Beitrag aus dem Index dauerhaft zu entfernen.</p>';
...    echo '<hr>';
...    echo '&copy by Administrator';
...    echo '</body>';
...    echo '</html>';
...    exit;
... }
...

Dieser Code kann in die index.php ganz an den Anfang kopiert werden

Kopieren Sie den Code am besten in die index.php des betreffenden CMS ganz nach oben, damit im Falle eines Error 404 die weitere Verarbeitung durch den Befehl exit verhindert wird.

Bei dem CMS Pico ist Vorsicht geboten. Das Codebeispiel muss zwischen die bestehenden PHP-Tags kopiert werden, da sonst das Sitemap-Plugin nicht mehr korrekt funktionieren könnte.

Eingabe-Liste gelöschter Beiträge

Als nächstes wird eine Liste mit allen URL angelegt, deren Beiträge als gelöscht (410) oder nicht gefunden (404) behandelt werden sollen. Im Code-Beispiel oben heißt die Datei:

liste-geloeschter-beitraege.txt

Die Datei nimmt URL für die Prüfung auf

und liegt im Wurzelverzeichnis, wie auch die index.php Datei. In dieser Liste werden die verschiedenen URL wie folgt nacheinander notiert:

/thema-a/beitrag-aa-alt
/thema-a/beitrag-ab-alt
/thema-b/beitrag-ab-alt
/thema-b/beitrag-bb-alt

Je Zeile eine URL eintragen

In der Eingabedatei werden die physikalischen URL (Slug) des gelöschten Beitrags notiert, ohne den führenden Domain-Namen und beginnend mit dem Schrägstrich. Die korrekte Schreibweise ist hier bedeutsam, da der IF in Zeile 3 einen exakten Vergleich der beiden Strings durchführt. Im Falle eines Treffers, sendet das Script dann den Error 404 an die Suchmaschine oder den Aufrufer, gibt eine passende Meldung am Browser aus und stoppt jedwede Weiterverarbeitung.

Das Script legt zudem ein kleines logfile.txt an, in dem es die mit Error 404 oder 410 behandelten Aufrufe sauber notiert. Diese Liste sollte vom Admin regelmäßig untersucht werden.

Sperrung durch robots.txt

Natürlich bestünde auch die Möglichkeit, die Suchmaschine anzuweisen, bestimmte Verzeichnisse nicht mehr zu crawlen, ein Eintrag in der robots.txt erledigt das ganz einfach. Google findet dies allerdings sehr schlecht und straft das Ranking hart ab. Zudem hält sich nicht jeder Bot an die Anweisungen der robots.txt und durchsucht den Content der Webseiten trotzdem.

Fazit

RedirectPermanent: Diese Methode funktioniert bei kleinen Webseiten sehr gut, sogar gelöschte Beiträge können so abgehandelt werden, indem die alte URL auf einen Artikel verweist, der mit dem noindex Tag in den Meta-Attributen versehen ist. Bei sehr großen Webseiten, bei denen sich die Beitragsstrukturen und Namen im laufe der Jahre entwickelt haben kommt diese Methode an die Grenze des machbaren. Es entstünden Redirekt-Einträge in der htaccess mit vielen 1000 Einträgen - das ist nicht mehr wartbar.

Error 404 und Error 410: Wenn unmißverständlich klar gemacht werden soll, das es diesen Beitrag nicht mehr gibt oder die Domain aus vielen hundert Beiträgen besteht, dann ist das der beste Weg, der zudem auch von Google laut Doku bevorzugt wird. Allerdings dürfen dann auch keine weiteren Sourcen wie Bilder oder PDF unter der alten URL erreichbar sein - beispielsweise ist der Bot der Google-Bildersuche einer, der solche Sourcen dennoch finden würde und die Seite sofort wieder indexiert.

Externe Webseiten: Die Entfernung eines Beitrags aus dem Google-Index dauert seine Zeit. Maßgeblich davon beeinflusst ist auch, ob dieser Beitrag wonders im Internet referenziert wird, dann wird es schwierig, denn das sieht Google ebenfalls. Es bleibt daher immer ein kleiner Bodensatz von URL übrig, die dann mittels RedirectPermanent auf eine Beitragsseite mit noindex-Attribut weitergeleitet werden können.

Schlagworte:

Beiträge in der Kategorie "PHP":

Wie können Sie Programm Kommentare in json Dateien und Files vornehmen? Gibt es einen Kommentar-Token oder einen anderen Trick um in json zu kommentieren?

Sie können mit PHP ein Verzeichnis mit Ordnern und Dateien einlesen und anzeigen. Der Beitrag zeigt ein kurzes Codesegment mit dem opendir() Befehl aus PHP.

Mit diesem Beitrag erstellen Sie (oder als Download) eine unabhängige Affiliate Datenbank, die Sie in jedem CMS, jeder Webseite oder jedem Blog nutzen können.

Die Formularverarbeitung durch PHP ist der beliebteste Standard im Web. Nutzen Sie ein intelligentes Design, können Sie sich viel Arbeit und Stress ersparen.

Möchten Sie einen Log-Mechanismus entwickeln den Sie leicht in jedes PICO Template einbinden können, dann ist JavaScript und PHP ideal dafür.

Das Auflösen mehrdimensionaler Arrays ist in PHP sehr sperrig, daher in diesem Beitrag ein einfaches diskretes Design-Pattern, für die Auflösung von Arrays

Die kleinste PHP-Template-Engine bzw kleinste PHP-Template-Parser, der mit Heredoc Syntax arbeitet. Die Heredoc Syntax ist ideal für kleine Prototypen.

Mit diesem kleinen Script realisieren Sie einen Mailversandt mit Standard PHP und einer Sperrliste die den Versand abbricht wenn Sperrworte enthalten sind.

In diesem Beitrag können Sie eine kleine FlatFile Projekt Datenbank herunterladen. Eine Beispielimplementierung in Anlehnung an die FlatFileDB von H.Wiledal

Sie möchten einen alten Artikel aus dem Google-Index entfernen dann sollten Sie vorher diesen Beitrag lesen

Dieser Beitrag zeigt einen Heredoc Template Parser und mini CMS, erstellt in PHP, unter Nutzung der Heredoc-Syntax. Content, Template und Parser in einer Datei.

Mit diesem PHP Script lesen Sie eine Mail in Ihrem Postfach, werten den Inhalt mittels PHP aus und löschen im Anschluss die Mail aus dem Posteingang mit PHP.

Möchten Sie große Mengen Content verwalten und systematisch organisieren oder entwickeln ein eigenes Flatfile CMS, dann hilft die Flatfile DB von Hugo Wiledal

Das ist die kleinste PHP Template-Engine, bzw. das kleinste PHP-CMS der Welt, erstellt mit der Programmiersprache PHP und 7 Zeilen Code.

Beiträge mit PHP-Mail an die Seite senden und veröffentlichen

Kategorien

Automad

Das kostenlose Flat File CMS Automad bietet bereits nach der Installation auf dem Server das beste Layout unter allen CMS am Markt.

Bludit

Das kostenlose Flatfile CMS Bludit ist das beliebteste Content Management System, das dem großen WordPress sehr nahe kommt, jedoch deutlich mehr Sicherheit bietet.

CMS

In dieser Rubrik geht es um übergreifenden Themen aus dem Bereich der Content Management Systeme.

Coast

Coast ist ein CMS aus deutscher Feder und ist mit einem exzellenten HTML/PHP Frontend-Editor zu vergleichen, die Daten werden direkt in der HTML-Datei gespeichert.

GetSimple

Das kostenlose Content Management System GetSimple verspricht genau das, was der Name andeutet, ein stabiles Flat File CMS auf der Basis von XML-Dateien.

GRAV

Das kostenlose Content Management System GRAV gehört zu den komplexesten CMS, da es den größten Funktionsumfang mitbringt.

Handlebars.JS

Handlebars.js ist eine kostenlose JavaScript Template-Engine mit der einfache Webseiten oder Prototypen leicht und schnell erzeugt werden können.

htaccess

Die .htaccess ist die wohl wichtigste und mächtigste Datei, über die der Server seinen Umgang mit den Daten und Besuchern steuert.

Java

Java ist die strategische Programmiersprache für verteilte Anwendungen im Internet oder auch in der Client-Server Architektur und sogar auf dem Host.

Monstra

Das CMS Monstra ist ein überaus gelungenes und sauber entwickeltes CMS mit Admin-Backend und Flat File Datenbank.

PHP

PHP ist die strategische Programmiersprache des Internets, mit PHP geht alles und ohne PHP nichts! Allerdings ist PHP nicht auf lokalen Client-Umgebungen verbreitet (aber möglich).

Pico

Das CMS Pico ist derzeit das ausgereifteste und einfachste headless CMS für den Einsatz großer Mengen an MarkDown-Files (Content).

Smarty

Smarty ist eine Template-Engine auf Basis der Programmiersprache PHP und ist in der Lage HTML-Vorlagen (Templates) dynamisch mit Content zu versorgen.

Typemill

Typemill ist zunächst ein ganz normales Flat File CMS, entfaltet jedoch sein wahres Potenzial mit einigen besonderen Plugins, die es zum kraftvollen Publishing-Tool macht.

WonderCMS

WonderCMS ist das mit Abstand kleinste CMS das es derzeit kostenlos gibt. WonderCMS kommt mit einem PHP-Script und einer JSON-Datenbank aus und bietet ein Backend.

WordPress

Das datenbankbasierte Content Management System WordPress ist das beliebteste CMS und hält die meisten Installationen - ist allerdings auch das am meisten attackierte System.

Derzeit sind noch keine passenden Beiträge vorhanden.