Hinweise zur Erstellung von Rewrite Rules

Für Webhosting Linux-Pakete und Managed Dedicated Server

Wir zeigen Ihnen, welche Fehlerquellen Sie überprüfen können, wenn Ihre Rewrite-Regeln nicht wie gewünscht funktionieren.

Sie können Rewrite-Regeln in einer .htaccess-Datei verwenden, um Seiten umzubenennen und umzuleiten. Benennen Sie zum Beispiel die URLs Ihrer Webseiten für die Suchmaschinenoptimierung (SEO) um oder leiten Sie den Aufruf für verschiedene Zwecke um.

ACHTUNG

Rewrite Rules können sehr komplex sein und bereits bei der kleinsten Unsauberkeit einen Fehler 500 hervorrufen. Solche Fehler können schon daraus resultieren, dass nur ein Zeichen falsch angegeben wurde. Hierbei handelt es sich dann um keine Serverstörung. In der Regel funktioniert die Webseite wieder störungsfrei, sobald die entsprechenden Zeilen in der .htaccess auskommentiert wurden.

.htaccess

Rewrite Rules werden in einer .htaccess-Datei auf dem Webspace bzw. Server definiert. Wie Sie eine .htaccess-Datei erstellen, erklären wir Ihnen im Hilfe-Artikel Dateien mit vorangestelltem Punkt unter Windows erstellen. Bitte stellen Sie sicher, dass die Datei, die Sie per WebspaceExplorer oder FTP auf Ihren Webspace laden, auch tatsächlich .htaccess heißt.

mod_rewrite und Aktivierung der RewriteEngine

Auf den Webhosting-Servern ist das Apache-Modul mod_rewrite bereits standardmäßig aktiv. Damit Ihre Rewrite-Regeln wirksam werden, schalten Sie die so genannte RewriteEngine ein. Geben Sie dazu den folgenden Befehl am Anfang Ihrer .htaccess ein:

RewriteEngine On

Parameter RewriteBase und Angabe von Verzeichnissen

Nachdem Sie die RewriteEngine aktiviert haben, müssen Sie auch die sogenannte RewriteBase am Anfang der .htaccess angeben:

RewriteBase /

Mit der RewriteBase legen Sie fest, ab welchem Verzeichnis die RewriteRule wirksam werden soll. Wenn die RewriteBase wie oben mit / angegeben wird, ist der Ausgabepfad das Verzeichnis, mit dem die umzuleitende Domain verknüpft ist. Um zu sehen, welchem Verzeichnis eine Domain derzeit zugewiesen ist, klicken Sie auf die betreffende Domain in Ihrer Domainverwaltung. Auf der Detailseite Ihrer Domain wird Ihnen dann der Pfad zum Webspace angezeigt.

RewriteBase und RewriteRule in selbem Verzeichnis

Soll die erstellte RewriteRule im selben Verzeichnis greifen, zu dem auch die RewriteBase definiert wurde, geben Sie bei Ihrer RewriteRule keine weiteren Verzeichnispfade an. Es reicht die Angabe der Datei mit voran gestelltem /.

RewriteEngine On
RewriteBase /
RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R,L] 

RewriteBase und RewriteRule in verschiedenen Verzeichnissen

Wenn eine RewriteRule in einem anderen Verzeichnis als dem von der RewriteBase angegebenen wirksam werden soll, muss dies mit der entsprechenden Angabe des Verzeichnispfads definiert werden.

Ein Beispiel: 
Die folgende RewriteRule legt fest, dass jeder URL-Aufruf zu einer nicht existierenden HTML-Seite automatisch die Datei index.html aus dem Verzeichnis /test laden soll.

RewriteEngine on
RewriteBase /
RewriteRule ^(.*)\.html$ test/index.html 

Wenn die Domain bereits über das IONOS Kundenkonto mit dem Verzeichnis /test verbunden worden wäre, wäre die Angabe des Verzeichnisses /test in der RewriteRule nicht mehr notwendig, da dies bereits über die Angabe in der RewriteBase definiert ist. 

Tipps zur Fehlervermeidung

Hier führen wir die häufigsten Fehlerursachen auf, die dazu führen können, dass eine Rewrite-Regel nicht wirksam wird, auch wenn sie keinen Fehler 500 auslöst.

  • Vergewissern Sie sich, dass sich die .htaccess im richtigen Verzeichnis befindet. Beachten Sie, dass eine .htaccess rekursiv wirkt. Das bedeutet, dass sie sich auf das Verzeichnis, in dem sie gespeichert wurde, und die entsprechenden Unterverzeichnisse auswirkt.

  • Vermeiden Sie nach Möglichkeit mehrere, verschachtelte .htaccess-Dateien auf einer Pfadebene. Fehler in einer .htaccess eines Unterverzeichnisses können sich unter Umständen auch negativ auf übergeordnete Rewrite-Regeln auf oberen Verzeichnisebenen auswirken.

  • Wir empfehlen Ihnen, für jede Domain oder Webpräsenz ein eigenes Verzeichnis anzulegen. Auf diese Weise können Sie problemlos separate .htaccess-Dateien und Rewrite-Regeln für jede Domain definieren, die sich nicht gegenseitig behindern.

  • Haben Sie im gleichen Verzeichnis über Ihr IONOS Kundenkonto ein geschütztes Verzeichnis erstellt? Diese Funktion überschreibt selbst erstellte .htaccess-Dateien und macht damit Ihre Rewrite-Regeln unwirksam. Unsere Empfehlung: Erstellen Sie den Verzeichnisschutz selbst in Ihrer .htaccess mit Hilfe des Hilfeartikels Verzeichnisschutz mittels .htaccess und FTP einrichten.

  • Prüfen Sie, ob Funktionen auskommentiert (deaktiviert) sind. Einige vorgefertigte Skripte und Content Management Systeme (CMS), wie z.B. Joomla, kommentieren die Rewrite-Regeln zunächst aus, um Probleme bei der Installation zu vermeiden. In einer .htaccess werden Befehle auskommentiert, indem einer Zeile eine Raute (#) vorangestellt wird:

# Beispiel für Rewrite-Rule:
# (macht aus http://domain.de/xyz.html ein http://domain.de/index.php?xyz
#
RewriteEngine on
RewriteBase /
# RewriteRule ^([a-z]+)\.html$ /index.php?$1 [R,L] 

Im obigen Beispiel wurde die eigentliche RewriteRule auskommentiert und ist daher nicht wirksam. Entfernen Sie die Raute vor RewriteRule und speichern Sie die geänderte .htaccess auf dem Server.

  • Prüfen Sie, ob der .htaccess die erforderlichen Dateiberechtigungen zugewiesen wurden (chmod). Im  WebspaceExplorer können Sie die Dateiberechtigungen anpassen, indem Sie mit der rechten Maustaste auf die .htaccess klicken und den Punkt Rechte ändern auswählen. Geben Sie unter dem Punkt Oktalschreibweise den Wert 644 ein. Dies ist für die Funktionen einer .htaccess ausreichend.
  • Prüfen Sie die Befehle sorgfältig auf Rechtschreibfehler und stellen Sie sicher, dass nichts fehlt.