theHacker's Blog
– It's just a glitch in the Matrix –
2

Google Search Console: "Serverfehler (5xx)" für WordPress-Theme abstellen

Ich bekam eine Mail von Google, dass es ein Problem mit der Indexabdeckung gibt. In der Search Console finden weitere Informationen zu dem Fehler: Der Googlebot hat versucht, das WordPress-Theme-Verzeichnis direkt aufzurufen.

Erklärung, wie der HTTP 500 zu Stande kommt

Aus WordPress-Sicht ist der Fehler vollkommen normal, da normalerweise die index.php im Theme-Verzeichnis niemals direkt aufgerufen wird. Stattdessen würde der Rewrite-Mechanismus des Webservers die zentrale WordPress-index.php ausführen, die u. a. guckt, welches Theme du ausgewählt hast und dann erst die index.php im Theme-Verzeichnis einbinden. Zu diesem Zeitpunkt stehen in der PHP-Umgebung alle WordPress-Funktionen zur Verfügung und das Theme macht seine Magic, um am Ende die Inhalte an der Nutzer präsentieren zu können.

Im Falle von Google, bei dem die Theme-index.php direkt angefordert wird, fehlen die WordPress-Funktionen und der PHP-Interpreter bricht die Script-Ausführung mit Fehler ab. Und das wiederum führt zum beobachtbaren HTTP 500. Im Apache-Logfile kann man den Fehler in der error.log nachvollziehen:

PHP Fatal error:  Call to undefined function get_header() in /srv/apache2/thehacker.blog/wp-content/themes/thehacker.blog/index.php on line 1

get_header ist eine WordPress-Funktion und dafür zuständig, den Header-Bereich der Webseite auszugeben. Es kann durchaus sein, dass du in deinem Theme eine andere Fehlermeldung bekommst, wenn der Theme-Autor vorher eine andere WordPress-Funktion aufruft.

Abstellen des Fehlers

Grundsätzlich: Das ist kein schlimmes Problem. Der Googlebot tut etwas, was er nicht tun sollte. Dass er in diesem Fall einen Fehler bekommt, da ist er selber schuld. Aber natürlich wäre es doch viel schöner, den hässlichen Fehler-Eintrag in der Search Console wegzubekommen. Das tun wir jetzt.

In die passende Apache-Konfiguration fügen wir hierzu einfach einen kleinen Block ein, der den Aufruf von genau dieser einen URL verbietet:

## Google ruft das Verzeichnis direkt auf, was zu 500 führt. Wir triggern 403.
<LocationMatch "^/wp-content/themes/thehacker.blog/?$>
    Require all denied
</LocationMatch>

Der Webserver wird nun HTTP 403 senden und dem Googlebot damit klar machen, dass es ihm verboten ist, diese URL aufzurufen.

Fehler als gelöst markieren

Zum Schluss kann man in der Search Console durch einen entsprechenden Button-Klick den Fehler als gelöst markieren. Beim nächsten Crawling der URL durch den Googlebot erhält man dann eine Mail, dass der Fehler behoben ist:

Kommentare zu diesem Artikel

    • Ein sehr konstruktiver Beitrag… 🤨
      Selbstverständlich darfst du gerne eine bessere Lösung vorschlagen.

      Es ist gängige Praxis bei einem Verzeichnis 403 zu senden, z. B. in einer Apache-Konfiguration, wo nicht explizit Options +Indexes gesetzt ist.

Schreib einen Kommentar zum Artikel

CAPTCHA Das Internet ist leider voller Bots. 🙁 Bitte gib den obenstehenden Code ein.
Falls du den Code nicht lesen kannst oder dir unsicher bist, klick einfach hier, um einen neuen Code zu generieren.

Mit Abschicken des Formulars bestätigst du,
die Datenschutz-Infos gelesen zu haben.