Rewrite Rules mit htaccess

Contabo Webspace XXL

Eine oft gestellte Frage betrifft überwiegend unsere Webspace-Pakete, ist aber mit Sicherheit für viele interessant:

Wie kann ich den Inhalt meiner Hauptdomain in einen Unterordner ablegen, ohne dass der Besucher einen Unterschied sieht?

Das Problem ist, dass cPanel einem Account genau eine Domain als Haupt-Domain zuweist. Addon-Domains können zwar hinzugefügt werden, landen in der Ordnerstruktur aber einfach unterhalb des Ordners der Haupt-Domain. Das sieht dann z.B. so aus:

  • /
    • public_html/
      • admin/
      • config/
      • data/
      • testdomain2.de/
        • admin/
        • config/
        • data/
        • themes/
        • index.php
      • themes/
      • index.php

Das kann bei mehreren Addon-Domains schnell sehr unübersichtlich werden. Besser wäre, die Hauptdomain auch in einen eigenen Ordner zu verlagern. Genau hier fehlt leider eine Option in cPanel. Glücklicherweise ist das auch gar nicht nötig, denn mittels Rewrite Rule in der .htaccess-Datei können Sie selbst festlegen, wo sich der Inhalt der Haupt-Domain befinden soll.

Idealerweise beginnen Sie mit einem frisch aufgesetztem Webspace-Paket. Ansonsten gilt die Faustregel, zunächst ein Backup aller Daten zu erstellen, um bei Problemen den ursprünglichen Zustand wiederherstellen zu können. Hier erweist sich der cPanel-Sicherungsassistent als nützlich.

Die folgenden Schritte können bequem per FTP-Client erledigt werden.

Wenn bestehende Daten übernommen werden sollen, legt man zunächst einen neuen Ordner in /public_html an und benennt ihn nach der Domain, also z.B. testdomain.de. Dorthin verschiebt man alle Dateien und Ordner, die zu der Seite gehören. In unserem Beispiel sind das die Ordner admin, config, data, themes und die Datei index.php. Falls bereits eine .htaccess-Datei vorhanden ist, wird diese auch dorthin verschoben.

Als nächstes muss eine neue .htaccess-Datei in /public_html angelegt werden. Diese öffnet man mit einem Editor und fügt folgende Zeilen ein:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^testdomain.de$ [OR]
RewriteCond %{HTTP_HOST} ^www.testdomain.de$
RewriteCond %{REQUEST_URI} !^/testdomain.de
RewriteRule ^(.*)$ testdomain.de/$1 [L]

testdomain.de ist durch den eigentlichen Domain-Namen zu ersetzen.

Nachdem die Datei gespeichert wurde, kann man die Domain bereits im Browser aufrufen. Die Seite sollte korrekt angezeigt werden.

Der nächste Schritt hängt von der verwendeten Software ab. In diesem Beispiel wird die Vorgehensweise für Joomla! 3 und WordPress erläutert.

Meistens werden die URLs auf einer Seite relativ zum Speicherort generiert. Nach unserer Änderung würden Unterseiten also nach folgendem Schema in der Browser-Adresszeile angezeigt werden:

https://testdomain.de/testdomain.de/index.php

Um das zu korrigieren, muss in der Joomla!-Konfiguration die Basis-URL absolut festgelegt werden. Dazu wird folgende Zeile in der configuration.php bearbeitet:

public $live_site = 'https://www.testdomain.de/';

Unter Umständen muss für die Datei configuration.php vorab Schreibrecht gewährt werden.

Wenn in Joomla! URL Rewriting aktiviert wurde, muss noch in der .htaccess-Datei im Unterordner der Domain folgende Zeile bearbeitet werden:

RewriteBase /testdomain.de

Die Raute am Zeilenanfang muss unbedingt entfernt werden.

WordPress lässt sich analog in der Konfigurationsdatei wp-config.php anpassen:

define('WP_HOME','https://testdomain.de');
define('WP_SITEURL','https://testdomain.de');

Die Änderungen sind damit nach außen komplett transparent. Die Seite ist wie gewohnt unter der Domain erreichbar. Die neue Ordnerstruktur ist deutlich übersichtlicher:

  • /
    • public_html/
      • testdomain.de/
        • admin/
        • config/
        • data/
        • themes/
        • index.php
      • testdomain2.de/
        • admin/
        • config/
        • data/
        • themes/
        • index.php
      • .htaccess

Das ist nur eine der vielen Möglichkeiten, die Rewrite Rules bieten. Wer mehr über dieses komplexe Thema erfahren möchte, wird unter anderem hier fündig.

Nach oben scrollen