1and1 Hilfe-Center Kategorien

print article

Hinweise zur Erstellung von Rewrite Rules

Für 1&1 WebHosting Linux-Pakete und Dedicated Server Managed

Wir zeigen Ihnen, welche Fehlerquellen Sie prüfen können, wenn Ihre Rewrite Rules nicht wie gewünscht greifen.


Sie können mit Hilfe von Rewrite Rules (Weiterleitungsregeln) in einer .htaccess-Datei Seiten umbenennen und umleiten. Benennen Sie z. B. die URLs Ihrer Webseiten zur Suchmaschinenoptimierung (SEO) um oder leiten Sie den Aufruf zu verschiedenen Zwecken um.
Bitte beachten Sie:
Rewrite Rules werden in einer .htaccess-Datei auf dem 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 1&1 WebHosting-Servern ist das Apache-Modul mod_rewrite bereits standardmäßig aktiv. Damit Ihre Rewrite Rules greifen können, schalten Sie die sogenannte RewriteEngine ein. Tragen Sie hierzu den folgenden Befehl am Anfang Ihrer .htaccess ein:
RewriteEngine On
Parameter RewriteBase und Angabe von Verzeichnissen

Nach Aktivierung der RewriteEngine ist zudem die Angabe der sogenannten RewriteBase zu Beginn der .htaccess erforderlich:
RewriteBase /

Mit der RewriteBase definieren Sie, von welchem Verzeichnis aus die RewriteRule greifen soll. Wird die RewriteBase wie oben mit / angegeben, ist der Ausgangspfad das Verzeichnis, mit dem die Domain, die umgeleitet werden soll, verknüpft ist. Mit welchem Verzeichnis eine Domain aktuell verknüpft ist, können Sie im 1&1 Control-Center in der Domain-Verwaltung nachvollziehen.

Beachten Sie unter Domains > Domains verwalten (ggf. auch "Domains > Domain Center") die Spalte Verwendungsart. Dort wird Ihnen das mit der Domain verknüpfte Verzeichnis 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

Soll eine RewriteRule in einem anderen Verzeichnis greifen als es die RewriteBase vorgibt, ist dies mit der entsprechenden Angabe des Verzeichnispfades zu definieren.

Beispiel-RewriteRule, die in einem anderen Verzeichnis wirken soll, als es die RewriteBase vorgibt.

Die folgende RewriteRule gibt vor, dass bei jedem URL-Aufruf einer nicht existierenden HTML-Seite automatisch die Datei index.html aus dem Verzeichnis /test geladen werden soll.

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

Wäre die Domain nun bereits über das 1&1 Control-Center zum Verzeichnis /test konnektiert worden, 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
Bitte beachten Sie:
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.

Wir listen Ihnen hier die häufigsten Fehlerursachen auf, die dafür sorgen können, dass eine Rewrite Rule nicht greift, auch wenn sie keinen Fehler 500 auswirft.

  • Stellen Sie sicher, dass die .htaccess im richtigen Verzeichnis platziert wurde. Beachten Sie dabei, dass eine .htaccess rekursiv wirkt. Sie wirkt also auf das Verzeichnis, in dem Sie gespeichert wurde und dessen jeweilige Unterverzeichnisse.
  • Vermeiden Sie möglichst mehrere, ineinander verschachtelte .htaccess-Dateien auf einer Pfadebene. Fehler in einer .htaccess eines Unterverzeichnisses können unter bestimmten Umstände auch übergeordnete Rewrite Rules auf oberen Verzeichnisebenen negativ beeinflussen.
  • Legen Sie aus diesem Grund am besten für jede Domain bzw. Web-Präsenz ein eigenständiges Verzeichnis an. So können Sie für jede Domain bequem eigene .htaccess-Dateien und Rewrite Rules definieren, die sich nicht gegenseitig stören.
  • Haben Sie im selben Verzeichnis ein geschütztes Verzeichnis per 1&1 Control-Center angelegt? Diese Funktion überschreibt selbst erstellte .htaccess-Dateien und macht damit Ihre Rewrite Rules unwirksam. Unsere Empfehlung: Erstellen Sie den Verzeichnisschutz selbst in Ihrer .htaccess anhand des Hilfe-Artikels Verzeichnisschutz mittels .htaccess und FTP einrichten.
  • Prüfen Sie, ob Funktionen auskommentiert (deaktiviert) sind. Manche vorgefertigten Skripte und Content-Management-Systeme (CMS), wie z.B. Joomla, kommentieren Rewrite Rules zur Vermeidung von Problemen während der Installation zunächst aus. In einer .htaccess werden Befehle auskommentiert, indem man einer Zeile eine Raute (#) voranstellt:
    # 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]

    In diesem Beispiel wurde die eigentliche RewriteRule auskommentiert und greift daher nicht. Entfernen Sie die Raute vor RewriteRule und speichern Sie die geänderte .htaccess auf dem Server.
  • Prüfen Sie, ob der .htaccess die erforderlichen Dateirechte (chmod) zugewiesen wurden. Im WebspaceExplorer passen Sie die Dateirechte per Rechtsklick auf die .htaccess und Auswahl des Punktes Rechte ändern an. Geben Sie beim Punkt Oktalschreibweise den Wert 644 ein. Dies ist für die Funktionen einer .htaccess ausreichend.
  • Durchsuchen Sie die Befehle aufmerksam nach eventuellen Schreibfehlern und stellen Sie sicher, dass nichts fehlt.
Weiterführende Dokumentationen zu mod_rewrite