Eigentlich sollte dieser Artikel »Server und WordPress-Fehler: die .htaccess Vererbung« heißen. Doch dieser Titel hätte nicht im Mindesten das wiedergegeben, was sich ereignet hat. Manche Fehler sind dermaßen blöd, dass man nur laut loslachen könnte, wenn es nicht so traurig gewesen wäre. Ein Mann am Rande der Verzweiflung im Kampf gegen einen Fehler, der kein Fehler war.
Es sollte nur eine einfache WordPress-Installation werden. Einmal frisch installieren und fertig. Diese Tätigkeit ist nicht wirklich anspruchsvoll und verlangt im Allgemeinen auch nicht viel Fachwissen zur Lösung. Und doch hat es mich an den Rand der totalen Verzweiflung gebracht, denn ich musste eine Lösung für einen Fehler finden, der keiner war.
Die Vorgeschichte – mein Server-Umzug
Vor einigen Monaten habe ich meinen Websites einen »Managed-Root Cloud Server« von hostNET gegönnt. Ich wollte schon länger weg von meinem Shared-Hosting und mir etwas gönnen, was auch zukunftssicher durch skalierbare Ressourcen ist.
Da wir bereits über diese Art eines vServers berichteten, wusste ich, dass mein neuer Server über einen »Auto-Installer« verfügte. Also probierte ich diesen gleich aus und installierte das WordPress für die erste Website im Hauptverzeichnis, und nicht in einem Ordner im selbigen. Zum Verständnis: mit Hauptverzeichnis meine ich nicht das Root-Verzeichnis des Servers, sondern jenes, in dem die Websites ihre Heimat finden (html oder public_html oder ähnliches).
Das eine Installation über den Auto-Installer eine schlechte Lösung war, merkte ich erst viel später. Normalerweise lege ich für jede Website im Hauptverzeichnis einen Ordner an, auf den die betreffende Domain dann zeigt. Das hat sich für mich als beste Lösung erwiesen.
Doch in diesem Fall installierte ich das WordPress für meine erste Website direkt im Hauptverzeichnis. Danach legte ich für jede weitere Website einen eigenen Ordner an, der sich durch meinen dummen Fehler jedoch innerhalb der WordPress-Dateien der ersten Installation befand.
Der falsche und der richtige Weg mit mehreren Websites
So sollte eine Organisation mit mehreren Websites nicht aussehen:

Wenn man mehrere Websites auf einem Server betreibt, dann sollte die Struktur keinesfalls so aussehen, wie auf dem Screenshot oben. Das schafft erhebliche Probleme und dient nicht gerade der guten Übersicht.
Der optimale Weg, mehrere Websites auf einem Server zu organisieren:

Eine optimale Struktur für die Organisation von mehreren Websites auf einem Server bedeutet immer, sich für jede der Websites einen eigenen und eindeutig benannten Ordner anzulegen, auf den die betreffende Domain dann zeigen wird. So bleibt die Übersicht gewahrt und Fehler lassen sich wesentlich leichter lokalisieren, denn es kann keine Vererbung stattfinden.
Der Versuch einer WordPress-Installation
Nicht ahnend, dass mein Tag echt anstrengend werden würde, startete ich die Installation einer Website. Ich legte einen Ordner an, schob die WordPress-Dateien hinein, erstellte eine wp-config.php mit den korrekten Daten der zuvor angelegten Datenbank und rief die Installations-Routine auf.
http://meinewebsite.de/wp-admin/install.php
Doch statt der Installations-Routine bekam ich die folgende Fehlermeldung zu sehen:
Forbidden You don’t have permission to access /wp-admin/install.php on this server
Auch nach mehreren, unterschiedlichen Versuchen und allen möglichen Tricks konnte ich das Problem nicht lösen. Irgendwann wurde es mir zu viel und ich löste das Problem mit der »Kneifzange«.
Die interessante Lösung des Problems
Eine Eingebung ließ mich testen, ob ich eine andere Datei im Ordner /wp-admin/
aufrufen konnte. Ich erstellte eine Datei namens temp.php
, und schrieb das berühmte »Hello World« hinein. Nachdem ich diese Datei in den Ordner verschoben hatte, ließ sie sich problemlos im Browser aufrufen. Also versuchte ich einen Trick mit der .htaccess Datei und schrieb folgendes hinein:
View the code on Gist.
Natürlich funktionierte das auch nicht. Wie sollte es auch? Doch dazu etwas später. Denn zuerst galt es, mein Problem zu lösen.
Verwandle die temp.php in die install.php
Die von mir erstellte temp.php im Ordner /wp-admin/
ließ sich ohne Probleme aufrufen. Also kopierte ich den Inhalt der install.php
in meine temp.php
und passte sie etwas an. Die genaue Prozedur kannst du hier nachlesen:
WordPress Fehler lösen: 403 Forbidden für /wp-admin/install.php
Nun ließ sich WordPress ohne Probleme installieren. Und bereits an diesem Punkt hätte ich auf den wahren Verursacher des Problems treffen können. Doch ich hatte leider keinen Spiegel zur Hand. Erst nachdem ich den Artikel über meine unkonventionelle Lösung des Fehlers veröffentlicht hatte, kam mir die wahre Ursache des Fehlers in den Sinn.
Die Problemursache: die htaccess Vererbung
Der Fehler hatte einen Verursacher und eine Ursache. Der Verursacher war ganz klar ich selbst, denn ich sichere meine Websites stets gegen alle denkbaren Sicherheitslücken ab. Genau das war dann auch die Ursache des Problems.
Ich hatte, ohne groß nachzudenken, das WordPress für meine erste Website in das Hauptverzeichnis des Servers installiert. Die weiteren Websites kamen dann in eigenen Ordnern in die WordPress-Installation der ersten Website.
Das bedeutet, dass sich die .htaccess Datei der ersten Installation auf alle Dateien und Ordner in dieser Installation auswirkt. Auch auf die weiteren Websites. Denn es findet eine Vererbung statt.
Website Nummer eins bekam meine standard- .htaccess Datei verpasst. Der betreffende Ausschnitt:
View the code on Gist.
Dieser Eintrag ist hochwirksam und verbietet jeglichen Zugriff auf die install.php. Sollte sich die Datei in einem Unterordner der ersten Installation befinden, dann ist der Eintrag auch dort wirksam. Grundsätzlich ist das eine logische Sache. Man muss nur darauf kommen.
Fazit: Viel Erfahrung schützt vor dummen Fehlern nicht
Auch Webmaster und Entwickler mit sehr viel Erfahrung machen manchmal dumme Fehler. Es fällt schwer, sich das einzugestehen. Doch es ist so. Manchmal sieht man einfach den Wald vor lauter Bäumen nicht. Wichtig ist nur, den Fehlern auf den Grund zu gehen, damit man dazulernen kann. An Fehlern und ihrer Lösung wächst man. Ich durfte in dieser Hinsicht gleich mehrfach dazulernen. Mein nächstes Zeitfenster wird der Neu-Organisation meines Servers dienen, damit diese Art von Fehlern nicht mehr vorkommen kann.
(dpe)