SEO: verschwundene Beiträge sind schlecht

Suchmaschinen mögen es gar nicht wenn Beiträge plötzlich verschwinden oder umbenannt werden. In folge dessen leidet das Ranking der Webseite erheblich und rutscht auf hintere Plätze in der Trefferliste der Suchmaschine. Oft können Sie aber gar nicht herausfinden, welche Beitragslink in der Suchmaschine noch indexiert sind 1, das soll dieser kleine Hack ändern.

Eine Zeile Code im Core.php

Der Yellow Core hat bereits eine Methode, um eine Error 404 Fehlerseite an den Aufrufer zurückzugeben. In diese Methode können Sie ein kleines Logging einhängen, um mitschreiben zu lassen, welche Beiträge nicht gefunden wurden, um dann später Umleitungen, Redirects nachzupflegen.

Der neue Code

In Zeile 124 der Datei core.php finden Sie die Methode processRequest(), an deren Ende in Zeile 145 das folgende Statement steht:

if (!is_readable($fileName)) $this->page->error(404);

Diese Anweisung prüft, ob die übergebene Datei lesbar ist, folglich ob diese auch existent ist und feuert dann einen Error 404 an den Aufrufer zurück. Jetzt reicht es aus den IF-Block wie folgt zu erweitern:

if (!is_readable($fileName)) {
    $this->page->error(404);
    file_put_contents("notfound.csv", $fileName."\n", FILE_APPEND | LOCK_EX)!==false;
}

Fügen Sie die geschweiften Klammern hinzu, da der IF nun nicht mehr einzeilig ist und mehr als eine Anweisung ausführen soll. Mit file_put_contents() weisen Sie an, ein Protokoll im root-Verzeichnis zu schreiben, in dem der gesuchte Dateiname notiert wird.

Optimierung des Code

Soweit funktioniert die COdeanpassung schon ganz gut, jedoch fällt auf, das Yellow immer die index.md mit protokolliert, das liegt daran, das wenn der Framework in einen Ordner einsteigt, dort eine index.md erwartet und versucht zu lesen. Dies können Sie ganz leicht noch ausschalten:

if (!is_readable($fileName)) {
    $this->page->error(404);
    if (!preg_match("{index.md}", $fileName)) {
        file_put_contents("log-404.txt", $location.' - '.$fileName."\n", FILE_APPEND | LOCK_EX)!==false;
    }
}

Fügen Sie einfach dem negierten preg_match() mit ein, um zu prüfen ob es um die index.md geht oder tatsächlich um den angeforderten Beitrag.

Sie können in der yellow-system.ini festlegen, ob es sich grundsätzlich um page.md oder index.md in einem Ordner als Index handeln soll.

Die Variable $location hilft dabei zu erkennen, ob eine Ordnerstruktur gerufen wird oder eine konkrete Datei $fileName.

Ich empfehle Ihnen fehlende Beiträge entsprechend zu administrieren. Versuchen Sie diese aus Backups zu restaurieren oder wenn diese umbenannt wurden, setzen Sie einen Redirect in der htaccess, damit die Suchmaschine die Indexierung Ihrer Seite anpassen kann.


  1. Natürlich können Sie sich in der Webmaster-Console der Suchmaschine registrieren und anmelden, dann haben Sie Zugriff auf das Indexverhalten der Suchmaschine. ↩︎


von Oliver Lohse