301-Weiterleitung einrichten: nginx, Apache, Cloudflare

Aktualisiert: 5 Min. Lesezeit Redaktion SEO-Trick
Kurz gesagt

Eine 301-Weiterleitung ist eine Serverantwort mit dem Status „Moved Permanently“. Browser folgen ihr sofort, Google behandelt das Ziel als kanonische URL und überträgt die Signale der alten Adresse. Für dauerhafte Umzüge nimmst du 301 oder 308, für vorübergehende 302 oder 307. Laut Google-Doku gehen bei 301 keine PageRank-Anteile verloren.

Die meisten kaputten Weiterleitungen, die mir begegnen, sind gar nicht kaputt. Im Browser landet man auf der richtigen Seite. Erst ein Blick auf die Statuscodes zeigt das Problem: ein 302 aus der Testphase, der nie ersetzt wurde, oder vier Sprünge hintereinander, weil http, www und der abschließende Slash jeweils eine eigene Regel bekommen haben. Eine saubere 301-Weiterleitung ist schnell eingerichtet. Man muss sie nur einmal richtig hinschreiben.

Was eine 301-Weiterleitung für SEO bewirkt

301 ist der HTTP-Status „Moved Permanently“. Der Server beantwortet die alte URL mit diesem Code und einem Location-Header, der auf die neue Adresse zeigt. Für Besucher passiert das unsichtbar. Für Google ist es ein starkes Signal zur Kanonisierung: Laut der Google-Doku zu Weiterleitungen wird das Ziel einer permanenten Weiterleitung als kanonische URL behandelt, die alte Adresse verschwindet nach und nach aus den Suchergebnissen.

Wichtig für die Praxis: Google schreibt in der Umzugs-Doku, dass 301 und andere permanente Weiterleitungen keinen PageRank kosten. Der Mythos, jede Weiterleitung fresse einen festen Anteil der Linkkraft, hält sich trotzdem hartnäckig in Foren. Google sagt etwas anderes, und ich sehe keinen Grund, das anzuzweifeln.

301 oder 302: welche Weiterleitung wann?

Die Frage „301 oder 302“ entscheidet sich an einer einzigen Überlegung: Kommt die alte URL zurück? Wenn nein, permanent. Wenn ja, temporär. So ordnet Google die Varianten ein:

WeiterleitungArtWas Google daraus macht
HTTP 301, 308permanentZiel wird kanonische URL
HTTP 302, 303, 307temporärZiel wird verfolgt, alte URL kann im Index bleiben
meta refresh mit 0 Sekundenpermanentwie ein 301
meta refresh mit Verzögerungtemporärwie ein 302
JavaScript locationpermanentnur wenn das Rendering klappt, also Notlösung

Ein 302 ist kein Fehler. Für eine Wartungsseite oder eine zeitlich begrenzte Aktion ist er richtig. Falsch wird er, wenn er bei einem Domainumzug stehen bleibt, weil das Plugin ihn als Standard gesetzt hat. Dann hält Google womöglich weiter an der alten URL fest.

301-Weiterleitung mit nginx

Auf einem eigenen Server ist nginx die sauberste Stelle. Das Beispiel leitet eine komplette alte Domain samt www-Variante auf eine neue um, Pfad und Query-String bleiben über $request_uri erhalten:

server {
    listen 80;
    listen [::]:80;
    server_name alte-domain.de www.alte-domain.de;
    return 301 https://neue-domain.de$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name alte-domain.de www.alte-domain.de;

    ssl_certificate     /etc/letsencrypt/live/alte-domain.de/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/alte-domain.de/privkey.pem;

    return 301 https://neue-domain.de$request_uri;
}

Der zweite Block ist der, den viele vergessen. Ohne gültiges Zertifikat für die alte Domain sieht jeder, der https://alte-domain.de aufruft, eine Zertifikatswarnung statt der Weiterleitung. Einzelne Seiten leitest du innerhalb eines bestehenden server-Blocks mit location = /alt/ { return 301 /neu/; } um. Nach jeder Änderung nginx -t und dann systemctl reload nginx.

Weiterleitung per .htaccess bei Apache

Auf Shared Hosting hast du meist nur die .htaccess. Mit mod_rewrite sieht der Domainumzug so aus:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?alte-domain\.de$ [NC]
RewriteRule ^(.*)$ https://neue-domain.de/$1 [R=301,L]

Ohne R=301 macht Apache übrigens einen 302. Der Query-String wird automatisch angehängt, solange in der Zieladresse kein eigenes ? steht. Für eine einzelne Seite reicht mod_alias:

Redirect 301 /leistungen/webdesign.html https://beispiel.de/webdesign/

Mische beide Module nicht für dieselben URLs. mod_rewrite wird vor mod_alias verarbeitet, und dann wundert man sich, warum eine Regel nie greift.

301 bei Cloudflare über Redirect Rules

Liegt die alte Domain bei Cloudflare, brauchst du dafür keinen Server. Unter Rules legst du eine Single Redirect Rule an:

  • Wenn eingehende Anfragen passen: http.host eq "alte-domain.de" or http.host eq "www.alte-domain.de"
  • Dann: URL-Weiterleitung, Typ Dynamic, Ausdruck concat("https://neue-domain.de", http.request.uri.path)
  • Statuscode 301, „Query-String beibehalten“ aktivieren

Der Haken: Cloudflare greift nur bei Anfragen, die durch den Proxy laufen. Die DNS-Einträge für alte-domain.de und www müssen deshalb auf „Proxied“ stehen. Hat die alte Domain gar keinen Server mehr, setzt du einen Platzhalter-A-Record auf 192.0.2.1 (ein Adressbereich, der nur für Dokumentation reserviert ist) und schaltest ihn auf Proxied. Die Anfrage kommt nie dort an, weil Cloudflare vorher weiterleitet.

Weiterleitungsketten finden und testen

Googlebot folgt laut Doku bis zu zehn Weiterleitungen hintereinander. Das heißt nicht, dass zehn in Ordnung sind. Google empfiehlt, direkt auf das Endziel zu zeigen, und jeder zusätzliche Sprung kostet Ladezeit. Mit curl siehst du sofort, was passiert:

curl -sIL http://www.alte-domain.de/kontakt | grep -iE '^(HTTP|location)'

So sieht eine Kette aus, die man aufräumen sollte:

HTTP/1.1 301 Moved Permanently
Location: https://www.alte-domain.de/kontakt
HTTP/1.1 301 Moved Permanently
Location: https://neue-domain.de/kontakt
HTTP/2 200

Zwei Hops, weil zuerst auf HTTPS und dann auf die neue Domain umgeleitet wird. Mit der nginx-Konfiguration oben wäre es einer. Teste nicht nur die Startseite, sondern eine Handvoll tiefer URLs, eine mit Query-String und eine, die es nicht mehr gibt.

Weiterleitungen im CMS: wann ein Plugin reicht

WordPress-Plugins für Weiterleitungen sind bequem und für einzelne Seiten völlig in Ordnung. Zwei Dinge solltest du aber prüfen. Erstens den Standard-Statuscode: Manche Plugins legen neue Regeln als 302 an, bis du das in den Einstellungen änderst. Zweitens die Reihenfolge: Ein Plugin greift erst, wenn WordPress geladen ist. Für einen Domainumzug mit tausenden URLs ist das langsamer als eine Regel im Webserver und funktioniert nur, solange die alte Installation noch läuft.

Für Shopsysteme gilt dasselbe. Shopify und andere gehostete Plattformen bringen eigene Weiterleitungsverwaltungen mit, die permanente Weiterleitungen setzen. Kontrollier das Ergebnis trotzdem mit curl, bevor du dich darauf verlässt.

Typische Fehler bei der 301-Weiterleitung

  • Alle alten URLs auf die Startseite. Google rät davon ab, viele Seiten auf eine thematisch unpassende Seite umzuleiten.
  • Weiterleitung auf eine Seite, die selbst noindex trägt oder per robots.txt gesperrt ist.
  • Interne Links zeigen weiter auf alte URLs. Dann läuft jeder Klick durch eine Weiterleitung, und Googlebot crawlt doppelt.
  • Die alte Domain wird nach ein paar Monaten nicht verlängert. Google empfiehlt, Weiterleitungen mindestens ein Jahr bestehen zu lassen, und das geht nur, solange dir die Domain gehört.

Gerade der letzte Punkt passiert öfter als man denkt. Die alte Domain kostet bei betadomain mit festem Jahrespreis für eine .de gerade 2,99 € im Jahr, auch in jedem Folgejahr. Das ist billiger als jeder verlorene Backlink. Wie der komplette Umzug abläuft, steht im Ratgeber zum Domainwechsel ohne Rankingverlust, und wie du Google den Umzug zusätzlich meldest, in der Anleitung zur Adressänderung in der Search Console.

Wann eine 301-Weiterleitung nicht reicht

Wechselst du nur zwischen www und ohne www oder stellst auf HTTPS um, ist die Weiterleitung schon fast alles, was du tun musst. Bei einem echten Domainwechsel kommt die Adressänderung in der Search Console dazu, und bei der HTTPS-Umstellung sollten Canonicals und Sitemap gleichzeitig angepasst werden.

Wenn du für den Umzug noch die neue Adresse suchst, kannst du deinen Wunschnamen prüfen und die Kandidaten danach einmal mit dem curl-Befehl von oben durchtesten, sobald die Weiterleitung steht. Für Länderendungen wie die .at-Domain gelten exakt dieselben Regeln.

Schritt für Schritt

  1. URL-Zuordnung anlegenExportiere alle alten URLs aus Sitemap, Search Console oder Logfiles und ordne jeder die passende neue URL zu. Seiten ohne Gegenstück bekommen 404 oder 410.
  2. Ebene für die Weiterleitung wählenWebserver (nginx, Apache), wenn du ihn kontrollierst. CDN-Regeln bei Cloudflare, wenn die alte Domain nur noch weiterleiten soll. Das CMS-Plugin nur, wenn nichts anderes geht.
  3. Regeln mit Status 301 schreibenIn nginx return 301, in Apache mod_rewrite das Flag R=301, bei Cloudflare eine Single Redirect Rule mit Status 301. Pfad und Query-String mitnehmen.
  4. Ketten auflösenJede alte Variante (http, www, mit und ohne Slash) zeigt direkt auf das endgültige Ziel. Ein Hop pro Anfrage ist das Ziel.
  5. Mit curl testencurl -sI auf mehrere alte URLs absetzen und prüfen, dass genau ein 301 mit korrektem Location-Header kommt und das Ziel mit 200 antwortet.
  6. Interne Links und Canonicals umstellenInterne Links, Canonical-Tags, hreflang und die XML-Sitemap auf die neuen URLs ändern, damit die Weiterleitung nur noch Besucher von außen auffängt.

Domain gefunden? Prüfen und registrieren kannst du sie direkt bei Domain ohne Lockvogelpreis – Jahrespreis ab 2,99 €.

Häufige Fragen

Verliert man durch eine 301-Weiterleitung Ranking?

Nach Googles eigener Doku zum Website-Umzug verursachen 301 und andere permanente Weiterleitungen keinen Verlust an PageRank. Schwankungen in den ersten Wochen kommen trotzdem vor, weil Google die neuen URLs erst crawlen und neu bewerten muss. Das ist eine Übergangsphase, keine Strafe.

Wie lange muss eine 301-Weiterleitung bestehen bleiben?

Google empfiehlt bei Umzügen mindestens ein Jahr. Danach darfst du sie entfernen, musst aber nicht. Alte Backlinks, Lesezeichen und gedruckte Visitenkarten verweisen oft noch Jahre später auf die alte Adresse, deshalb lasse ich Weiterleitungen in der Regel dauerhaft stehen.

Was ist der Unterschied zwischen 301 und 308?

Beide sind permanent, Google wertet sie gleich. Bei 308 darf der Client die Anfragemethode nicht ändern, ein POST bleibt also ein POST. Für normale Seitenumzüge ist das egal, 301 wird von älteren Tools und CMS-Plugins etwas breiter unterstützt.

Darf ich alle alten Seiten auf die Startseite weiterleiten?

Technisch ja, Google rät aber ausdrücklich davon ab, viele alte URLs auf eine einzige, thematisch unpassende Seite wie die neue Startseite umzuleiten. Leite jede alte URL auf ihr nächstes inhaltliches Gegenstück. Gibt es keins, ist ein 404 oder 410 die ehrlichere Antwort.