Tipps & Tutorials

301-Redirects - Weiterleitungen mit .htaccess


Veröffentlicht am 07.12.2022 von DomainFactory

(Update) Weiterleitungen – und zwar permanente Weiterleitungen, bei denen der Webserver dem Client und auch dem Crawler der Suchmaschine den Statuscode 301 übermittelt – sind aus SEO-Sicht sehr wichtig. Lesen Sie, wie 301-Redirects funktionieren und wie Sie mit Hilfe der sogenannten .htaccess-Datei flexibel Weiterleitungen (301-Redirects) realisieren.

Was ist ein 301-Redirect?

Ein 301-Redirect ist eine Form der Weiterleitung – der Aufruf einer Webseite oder anderen Ressource wird auf eine andere Webadresse (URL) umgeleitet. Dies geschieht in diesem Fall über den HTTP-Header, den der Webserver in seiner Antwort an den anfordernden Client mitsendet. Im Header-Feld „Location“ wird die neue URL angegeben und per HTTP-Statuscode dem Client mitgeteilt, was er damit tun soll. Statuscode „301 Moved Permantently“ zeigt an, dass es sich um eine permanente Weiterleitung handelt und alle weiteren Anfragen nach dieser Ressource auf die neue URL umgeleitet werden sollen.

Für Interessierte: Die Statuscodes 301 bis 308 für Weiterleitungen sind in RFC 9110 spezifiziert. Der Statuscode 301 existiert aber bereits seit der ersten HTTP-Version 1996 (RFC 1945). Erst seit 2014 (RFC 7238) gibt es auch den Statuscode „308 Permanent Redirect“ mit fast identischer Wirkung. Der einzige Unterschied: Während der Client bei Status 301 die HTTP-Methode der nachfolgenden Anfrage für mehr Sicherheit von POST auf GET ändern darf, ist das bei Status 308 nicht zulässig – nützlich etwa, wenn Formulardaten an eine permanent geänderte URL übermittelt werden sollen. In Bezug auf SEO sind beide Codes gleichwertig – aber das kann sich durchaus noch ändern.

Redirect auf HTTPS – und andere Anwendungsfälle von 301-Redirects

Es gibt eine Reihe von Situationen, in denen Sie mit 301-Redirects arbeiten sollten – und nicht etwa mit Meta-Refreshs oder ähnlichen Tricks. Diesen ist gemeinsam, dass sich entweder die URLs für Inhalte dauerhaft geändert haben oder ähnliche Inhalte unter verschiedenen URLs erreichbar sind, was von Suchmaschinen womöglich als „Duplicate Content“ bestraft wird. In diesem Falle sollten Sie eine Adresse als bevorzugte (kanonische) Seite auswählen und indizieren lassen, während die anderen URLs permanent darauf umgeleitet werden. (Mehr erfahren Sie in unserem Beitrag 301-Redirect: Permanente Weiterleitungen aus SEO-Sicht.)

Einige Anwendungsfälle für 301-Redirects:

  • Nutzer sollen auf verschlüsselte Seiten mit SSL-Zertifikat (HTTPS) umgeleitet werden.
  • Die Website wurde auf eine neue Domain migriert.
  • Ein Inhalt soll über verschiedene URLs erreichbar sein (verschiedene Domains, Versionen mit und ohne „www.“ etc.)
  • Pfade haben sich geändert (Website-Restrukturierung oder Zusammenführung verschiedener Websites).
  • Es müssen verschiedene Seiten ähnlichen Inhalts konsolidiert und auf eine „kanonische“ Seite umgeleitet werden, um Duplicate Content zu vermeiden.
  • Es wurde eine Seite entfernt und Nutzer sollen auf eine andere Seite (z. B. ein aktuelleres Produkt) weitergeleitet werden.

In allen diesen Fällen sind 301-Redirects das Mittel der Wahl. Falls Sie für Ihre Website den Webserver Apache einsetzen, können Sie solche permanenten Weiterleitungen leicht per .htaccess einrichten.

Was ist die .htaccess?

Die .htaccess gilt bei Profis als Geheimwaffe für Website-Admins. Dateien mit dem Namen .htaccess (ohne Endung, der Punkt am Anfang kennzeichnet in der Unix-Welt versteckte Dateien) sind Server-Konfigurationsdateien für Webserver, insbesondere für Apache. Dieser übernahm das Konzept der .htaccess-Dateien vom Webserver NCSA httpd, der in den Anfangszeiten des WWW eine Zeitlang das Internet dominierte und als Basis für die Apache-Entwicklung diente. Wichtigster Anwendungskontext war bereits damals das Shared Hosting: Eine Webserver-Software ist für die Auslieferung mehrerer, voneinander unabhängiger Websites zuständig. Um diese individuell steuern zu können, sollte neben der zentralen Konfiguration (bei Apache über die httpd.conf) auch eine Konfiguration pro Verzeichnis möglich sein. Genau das leistet die .htaccess.

Bei jedem Aufruf einer Seite prüft der Webserver sämtliche Verzeichnisse der Dateistruktur oberhalb des angeforderten Dokuments auf das Vorhandensein solcher Konfigurationsdateien, liest sie ein und überschreibt die Default-Vorgaben der zentralen Konfiguration mit den verzeichnisspezifischen Inhalten. Diese werden also sofort und ohne Neustart des Servers wirksam.

.htaccess erstellen und bearbeiten

Voraussetzung für eine Nutzung der .htaccess ist, dass Ihr Provider diese in der zentralen Konfiguration freigeschaltet hat. (Welche .htaccess-Features in verschiedenen Tarifen von DomainFactory verfügbar sind, finden Sie hier.) Häufig (z. B. bei WordPress) ist auf Ihrem Webspace bereits eine .htaccess-Datei vorhanden. Um eigene .htaccess-Funktionen zu nutzen, müssen Sie diese lediglich mit einem Texteditor bearbeiten. Sollte Ihr FTP-Programm keine .htaccess anzeigen, prüfen Sie bitte, ob dieses eventuell versteckte Dateien ausblendet. (Achtung: Wenn Sie Änderungen an einer .htaccess-Datei vornehmen, machen Sie bitte vorher ein Backup – Syntax-Fehler führen schnell zu einem Server Error 500).

Ist tatsächlich keine .htaccess-Datei vorhanden, erstellen Sie eine Textdatei und speichern Sie per FTP auf Ihrem Webspace. Sie können diese Datei „.htaccess“ nennen, denn das ist der in der Apache-Konfiguration voreingestellte Standardname (theoretisch könnte Ihr Provider aber auch eine andere Benennung vorgeben).

Die Direktiven (Befehle für eine spezifische Aufgabe oder Einstellung) in der .htaccess gelten stets für das Verzeichnis, in dem die Datei liegt, inkl. aller Unterverzeichnisse – solange dort nicht eine eigene .htaccess-Datei liegt, denn diese überschreibt die Vorgaben von .htaccess-Dateien in darüber liegenden Verzeichnissen.

Weiterleitungen per .htaccess: mod_alias und mod_rewrite

Anders als der Name suggeriert, kann über die .htaccess weit mehr konfiguriert werden als nur Zugriffseinstellungen. Zu beachten ist aber, dass ein großer Teil der Funktionalität des Apache-Webservers in kompilierten Modulen steckt. Für Weiterleitungen per .htaccess-Datei können Sie die Module mod_alias und mod_rewrite nutzen. 

mod_rewrite ist ein Erweiterungsmodul zur flexiblen Manipulation von URLs mittels sogenannter Rewrite-Regeln. Das „Umschreiben“ kann URLs auf Dateipfade abbilden, aber auch auf andere interne oder externe URLs, interne Proxies bzw. Weiterverarbeitungen oder Fehlerseiten umleiten. In Ihrer .htaccess können Sie dieses Modul nur nutzen, wenn es in der Konfiguration von Apache geladen und aktiviert wurde. Infos darüber liefert die PHP-Funktion phpinfo().

Im Netz finden Sie häufig Anleitungen, die selbst für einfache Umleitungen mod_rewrite nutzen. Wir empfehlen dagegen bei einfachen URL-Manipulationen die „Redirect“-Direktive des Apache-Basismoduls mod_alias. Das Modul mod_rewrite ist zwar wesentlich mächtiger, erfordert aber auch mehr Know-how. So können schnell Syntaxfehler entstehen, wenn man sich nicht mit regulären Ausdrücken auskennt. Außerdem muss mod_rewrite erst aktiviert werden, mod_alias ist standardmäßig aktiv.

Weiterleitungen per Redirect- oder RedirectPermanent-Direktive

Redirect fordert beim Aufruf eines passenden URL-Pfades den Browser auf, die Ressource über eine andere URL anzufordern. Die Direktive erwartet die Angabe der neuen URL und optional den alten URL-Pfad und einen Status. Syntax:

 

Redirect status  alter_URL-Pfad  URL

 

Der alte URL-Pfad (d. i. der Teil der URL nach Hostname + Port, case-sensitiv) beginnt mit einem Slash (/). Die neue URL geben Sie am besten als absoluten Pfad an.

❗ Achtung: Default-Einstellung für den Statuscode [status] ist „302“ bzw. „temp“ (temporäre Weiterleitung) – 301-Redirects müssen deshalb explizit mit „permanent“ oder „301“ angegeben werden!

Einige Beispiele:

# Redirect auf eine neue Seite

 

Redirect 301 /altes-verzeichnis/alte-seite.html www.meine-domain.tld/neues-verzeichnis/neue-seite.html

 

# Redirect auf ein neues Verzeichnis

 

Redirect 301 /altes-verzeichnis/ www.meine-domain.tld/neues-verzeichnis/

 

Anstelle von „Redirect permanent“ können Sie auch die Direktive „RedirectPermanent“ verwenden. So stellen Sie sicher, nicht versehentlich eine temporäre Weiterleitung zu veranlassen:

# Redirect aller Seiten bei Umzug auf eine neue Domain (Navigationsstruktur bleibt gleich)

 

Redirect 301 / neue-domain.tld

 

# Redirect aller Seiten bei Umzug auf eine neue Domain (geänderte Navigationsstruktur, daher Weiterleitung auf Startseite)

 

Redirect 301 / neue-domain.tld/startseite.html

Achtung: Redirect-Anweisungen werden nacheinander abgearbeitet, wobei zuerst gelistete Anweisungen Priorität haben – passt die Pfadangabe zu einem Aufruf, wird die entsprechende Anweisung ausgeführt und weitere ignoriert. Betreffen mehrere Anweisungen die gleichen Pfade (z.B. /verzeichnis1/datei sowie /verzeichnis1), sollten spezifischere Pfade zuerst aufgeführt werden. 

Mehr Informationen zu Redirect und anderen Direktiven von mod_alias finden Sie hier.

Weiterleitungen per RewriteRule

Das Modul mod_rewrite akzeptiert eine unbegrenzte Anzahl von Regeln (RewriteRule) und Regelbedingungen (RewriteCond), um zum Beispiel Weiterleitungen in Abhängigkeit von Server- oder Umgebungsvariablen, HTTP-Headern oder Zeitstempeln zu definieren. Die Direktive RewriteRule eignet sich auch für sehr komplexe Aufgabenstellungen. Der folgende Abschnitt kann nur eine kurze Einführung zum Modul geben. Weiterführende Informationen zum Funktionsumfang von mod_rewrite finden Sie hier und hier

Bevor Sie das Modul in Ihrer .htaccess-Datei nutzen können, müssen Sie mod_rewrite mittels der Direktive „RewriteEngine“ aktivieren:

 

RewriteEngine on

 

Es kann zudem erforderlich sein, das Startverzeichnis für die Rewrite-Anweisungen anzugeben. Das erfolgt per „RewriteBase“, z. B.

 

RewriteBase /
RewriteBase /startverzeichnis

 

„RewriteRule“-Direktiven werden ebenfalls der Reihe nach abgearbeitet. RewriteRule erwartet einen regulären Ausdruck für die Ausgangs-URL, deren Ersetzung sowie optionale Flags zum Beispiel für den Statuscode des Redirects (R=301) oder das Stoppen des Rewrite-Prozesses („Last“/ L). Syntax:

 

RewriteRule Suchausdruck Ersetzung [flags]

 

Die Regel wird angewendet, wenn der vom Browser angeforderte URI (bzw. der Teil unterhalb des Startverzeichnisses) zum Suchausdruck passt und eventuelle Bedingungen, angegeben per „RewriteCond“, zutreffen. Auch RewriteCond kennt Flags, z. B. „nocase“ (NC) oder „ornext“ (OR) für logische ODER-Verknüpfung mit der nächsten Bedingung (Default ist UND).  Hier ebenfalls einige Beispiele:

# Redirect mit Entfernung von www für alle Seiten von domain.tld

 

RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC]
RewriteRule ^(.*)$ domain.tld/$1 [L,R=301]

 

# Redirect auf www für alle Seiten von domain.tld außer robots.txt und sitemap.xml

 

RewriteCond %{REQUEST_URI} !^/(robots\.txt|sitemap\.xml)$
RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC]
RewriteRule ^(.*)$ www.domain.tld/$1 [R=301,L]

 

# Redirect von http auf https für alle Seiten, wenn Aufruf nicht auf Port 443 erfolgt

 

RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) %{HTTP_HOST}/$1 [R=301,L]

 

# Redirect aller Seiten – mit und ohne www – bei Umzug auf neue Domain

 

RewriteCond %{HTTP_HOST} ^domain\.tld$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.domain\.tld$ [NC]
RewriteRule ^(.*)$ www.neue-domain.tld/$1 [L,R=301]

 

Zum Abschluss noch ein Tipp: Wenn Sie nicht wissen, ob in der Installation Ihres Providers rewrite_mode (oder ein anderes benötigtes Modul) installiert bzw. geladen ist, können Sie das per <ifModule> prüfen und alle darauf bezogenen Anweisungen bedingt ausführen lassen:

 

<IfModule mod_rewrite.c>
  ..  Anweisungen
</IfModule>

 

 

Titelmotiiv:: Unsplash 

Der Autor:


Als Qualitätsanbieter überzeugen wir mit HighEnd-Technologie und umfassenden Serviceleistungen. Mit mehr als 1,3 Millionen verwalteten Domainnamen gehören wir zu den größten Webhosting-Unternehmen im deutschsprachigen Raum.

Kommentare

  • Sven

    Sven

    am 29.11.2021

    Hallo ich hätte eine Frage, ich habe wie oben beschrieben Überladen Redirect 301 meine Unterseite umgeleitet, wenn ich aber die Hauptdomain umleiten will auf die neue. Ändert es mir die die komplette [...] Hallo ich hätte eine Frage, ich habe wie oben beschrieben Überladen Redirect 301 meine Unterseite umgeleitet, wenn ich aber die Hauptdomain umleiten will auf die neue. Ändert es mir die die komplette neue Domain alte url? Was mache ich da falsch?

    Beispiel:
    Redirect 301 /Bilder.html https://www.Neuedomain.de/Bilderhaus.hmt
    ……weiter
    Redirect 301 / https://www.neuedomain.de/

  • Andreas

    Andreas

    am 07.02.2021

    Sehr nützlicher Beitrag! Hat mir gerade beim Einrichten der Redirects sehr geholfen.
    Merci. Sehr nützlicher Beitrag! Hat mir gerade beim Einrichten der Redirects sehr geholfen.
    Merci.

  • Stefan

    Stefan

    am 03.02.2020

    Super erklärt. Super erklärt.

  • Christopher Seidel

    Christopher Seidel

    am 03.02.2020

    wirklich toller Artikel, sehr sehr ausführlich
    eure Artikel lese ich immer gerne :-) wirklich toller Artikel, sehr sehr ausführlich
    eure Artikel lese ich immer gerne :-)

  • Sascha

    Sascha

    am 01.02.2020

    Sehr ausführlich, Danke! Wie ließen sich denn diese Direktiven auf NGNIX Webspaces umsetzen? Hab gehört, dort funktionieren htaccess Dateien gar nicht Sehr ausführlich, Danke! Wie ließen sich denn diese Direktiven auf NGNIX Webspaces umsetzen? Hab gehört, dort funktionieren htaccess Dateien gar nicht

    • Inga

      Inga

      am 04.02.2020

      Hallo Sascha,
      das ist der Fall, wenn man statt Apache Nginx als Webserver nutzt. Bei Shared Hosting-Produkten von DomainFactory ist das aber nicht möglich.
      In diesem Fall benötigt man andere [...] Hallo Sascha,
      das ist der Fall, wenn man statt Apache Nginx als Webserver nutzt. Bei Shared Hosting-Produkten von DomainFactory ist das aber nicht möglich.
      In diesem Fall benötigt man andere Direktiven. Das wäre evtl. ein Thema für einen eigenen Artikel, wir ziehen das gerne in Betracht.

      Viele Grüße
      Inga