WebsitesKategorie

301-Redirects – So richtest du Weiterleitungen mit .htaccess ein

13 min lesen
GoDaddy Deutschland Content Team
Titelmotiv des Bloagartikels zum Thema: 301-Redirects – So richtest du Weiterleitungen mit .htaccess ein

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. Erfahre hier, wie 301-Redirects funktionieren und wie du mit Hilfe der sogenannten .htaccess-Datei flexibel Weiterleitungen (301-Redirects) realisierst.

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 (die Ziel-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.

Anwendungsfälle für 301-Redirects aus Marketing-Sicht

Traffic-Transfer

Ein 301-Redirect ist eine permanente Weiterleitung von einer URL zu einer anderen (die URL “moved permanently). Der Sinn und Nutzen eines 301-Redirects besteht darin, den Traffic von einer alten Seite (zum Beispiel bei einem Relaunch die Internetauftritts) auf eine neue Seite (die neu erstellte Zielseite) umzuleiten, ohne dass die Besucher:innen auf eine 404-Fehlerseite stoßen. Eventuell hast du auch den Domainnamen für deinen neuen Internetauftritt gewählt. Mit htaccess-redirects kannst du alle Aufrufe deiner alten Domain an deine neue Internetadresse weiterleiten. Vielleicht hast du aber auch für Online-Marketing-Aktionen in der Vergangenheit spezielle Landingpages angelegt, die nun nicht mehr benötigt werden. Auch in diesem Fall kannst du mit einer Redirection, z.B. auf deine Startseite oder direkt zu den passenden Produkt-Unterseiten weiterleiten.

Wenn eine alte Seite viele Backlinks hat, wird der “Link-Juice” durch einen 301-Redirect auf die neue Seite übertragen. Dies kann helfen, das Ranking der neuen Seite in den Suchmaschinen zu verbessern bzw. zu erhalten.

404 vermeiden

Ein 301-Redirect wird oft verwendet, wenn eine Website umstrukturiert wird, Seiten umbenannt werden oder wenn eine Website auf eine neue Domain umzieht. Durch die Verwendung eines 301-Redirects wird sichergestellt, dass die Besucher auf die neue Seite geleitet werden und die Suchmaschinen die neue Seite indexieren und in den Suchergebnissen anzeigen können. Ungeliebte 404-Seiten werden dadurch vermieden, was sich auch in puncto Suchmaschinenoptimierung bezahlt macht.

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

Es gibt eine Reihe von Situationen, in denen du mit 301-Redirects arbeiten solltest – 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 solltest du  eine Adresse als bevorzugte (kanonische) Seite auswählen und indizieren lassen, während die anderen URLs permanent darauf umgeleitet werden.

Anwendungsfälle für 301-Redirects aus technischer Sicht:

  • Nutzer:innen 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:innen 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 du für deine Website den Webserver Apache (Apache-Server) einsetzen, kannst du solche permanenten Weiterleitungen leicht per .htaccess einrichten.

Du suchst eine hochperformante Hosting-Lösung für anspruchsvolle Webseiten? Webhosting bietet dir dedizierte Ressourcen für sichere und stabile Leistung. 

Jetzt WordPress-Hosting-Produkte von GoDaddy testen! Wir haben es einfacher gemacht, deine Website zu erstellen, zu veröffentlichen und zu verwalten

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.

Die Integration und Erklärung einer .htaccess-Datei

Hier sehen wir ein Beispiel einer generischen .htaccess-Datei:

# Aktiviere Rewrite Engine
RewriteEngine On

# Einstellungen für Error-Dokumente
ErrorDocument 404 /fehlerseite.php
ErrorDocument 500 /fehlerseite.php

# Einstellungen für PHP
AddHandler application/x-httpd-php .php
php_value upload_max_filesize 64M
php_value post_max_size 64M

# Einstellungen für Datei- und Verzeichniszugriff
Options -Indexes

  deny from all


# Setzen von Standard-Indexdateien
DirectoryIndex index.html index.htm index.php

# Umleitungen
Redirect 301 /alte-seite.html /neue-seite.html
RewriteRule ^alte-seite2\.html$ /neue-seite2.html [R=301,L]

Diese generische .htaccess-Datei enthält Einstellungen für die Rewrite Engine, für Error-Dokumente, PHP, den Datei- und Verzeichniszugriff, Standard-Indexdateien und Umleitungen. Die Einträge in den .htaccess-Dateien unterscheiden je nachdem, welche Einstellungen damit vorgenommen werden sollen. 

Spezialfall http 301-Redirect

Im folgenden Beispiel wird die Rewrite Engine aktiviert und die RewriteRule-Anweisung erstellt eine Weiterleitung von der alten URL "/alte-seite.html" zur neuen URL "/neue-seite.html". 

RewriteEngine On
RewriteRule ^alte-seite.html$ /neue-seite.html [R=301,L]

Der Flag "R=301" gibt an, dass eine 301-Weiterleitung durchgeführt werden soll, während der Flag "L" ergänzt, dass keine weiteren Regeln angewendet werden sollen, wenn diese Regel erfüllt ist.

Wenn ein Besucher die alte URL "/alte-seite.html" aufruft, wird er automatisch zur neuen URL "/neue-seite.html" weitergeleitet und erhält einen HTTP-Statuscode 301, der Suchmaschinen und Browsern mitteilt, dass die alte URL dauerhaft auf die neue URL umgeleitet wird.

.htaccess erstellen und bearbeiten

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

Ist tatsächlich keine .htaccess-Datei vorhanden, erstelle eine Textdatei und speichere diese per FTP auf deinem Webspace. Du kannst diese Datei „.htaccess“ nennen, denn das ist der in der Apache-Konfiguration voreingestellte Standardname (theoretisch kann dein Provider aber auch eine andere Benennung vorgeben).

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 deiner .htaccess kannst du 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 findest du 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“ kannst du auch die Direktive „RedirectPermanent“ verwenden. So stellst du 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 findest du 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 findest du hier und hier

Bevor du das Modul in deiner .htaccess-Datei nutzen kannst, musst du 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 du nicht weißt, ob in der Installation deines Providers rewrite_mode (oder ein anderes benötigtes Modul) installiert bzw. geladen ist, kannst du das per <ifModule> prüfen und alle darauf bezogenen Anweisungen bedingt ausführen lassen:

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

Häufig gestellte Fragen zum HTTP 301-Redirect

Was ist ein HTTP 301-Redirect? 

Ein HTTP 301-Redirect ist eine Weiterleitung von einer URL zu einer anderen URL, die von Suchmaschinen und Browsern als dauerhaft angesehen wird.

Was ist der Zweck eines HTTP 301-Redirects? 

Der Zweck eines HTTP 301-Redirects besteht darin, Besucher:innen von einer alten URL zu einer neuen URL zu leiten und gleichzeitig sicherzustellen, dass Suchmaschinen den neuen Inhalt indexieren. Die Zahl "301" im HTTP 301-Redirect-Statuscode gibt an, dass die Weiterleitung dauerhaft ist und Suchmaschinen die alte URL aus ihren Indexen entfernen sollten.

Wie erstellt man einen HTTP 301-Redirect? 

Ein HTTP 301-Redirect kann durch die Verwendung einer .htaccess-Datei, einer Programmierung im CMS oder durch Einstellungen in CMS-Erweiterungen vorgenommen werden.

Welche Auswirkungen hat ein HTTP 301-Redirect auf SEO? 

Ein gut durchgeführter HTTP 301-Redirect kann dazu beitragen, dass die Rankings der neuen URL steigen und die Rankings der alten URL auf ein Minimum reduziert werden.

Wie unterscheidet sich ein HTTP 301-Redirect von einem HTTP 302-Redirect? 

Ein HTTP 301-Redirect wird als dauerhafte Weiterleitung angesehen, während ein HTTP 302-Redirect als vorübergehende Weiterleitung angesehen wird.

Wie überprüft man, ob ein HTTP 301-Redirect ordnungsgemäß funktioniert? 

Du kannst den HTTP-Statuscode der Seite überprüfen oder eine Server-Header-Abfrage durchführen, um sicherzustellen, dass der Statuscode 301 zurückgegeben wird.

Was sind die häufigsten Fehler bei der Verwendung von der HTTP 301 Redirection? 

Die häufigsten Fehler bei der Verwendung von HTTP 301-Redirects sind falsch konfigurierte Redirects, zu viele Redirects und fehlerhafte Umleitungen.

Wie lange dauert es, bis ein HTTP 301-Redirect von Suchmaschinen erkannt wird? 

Es kann einige Wochen dauern, bis Suchmaschinen den neuen Inhalt indexiert haben und den HTTP 301-Redirect vollständig erkannt haben.

Gibt es auch Plugins für die Bearbeitung der htaccess-Datei? 

Ja, die gibt es für praktisch alle gängigen Content-Management-Systeme, zum Beispiel das Plugin Htaccess File Editor für WordPress mit dem du auch ohne große Programmierkenntnisse die WordPress-htaccess-Datei bearbeiten kannst.

Titelmotiiv:: Unsplash 

Products Used