.htaccess-Weiterleitung: 301-Redirects für Seiten, Ordner und Domains

Mit wenigen Zeilen in der .htaccess leitest du alte URLs, ganze Ordner oder eine komplette Domain dauerhaft um. Die richtigen Befehle für jeden Fall, typische Fehler und wie du die Weiterleitung prüfst.

Kurzfassung

Eine einzelne Seite leitest du mit Redirect 301 /alt.html https://deine-domain.de/neu/ um. Für Muster, ganze Ordner und Domainwechsel nimmst du RewriteRule mit [R=301,L]. Neue Regeln gehören oben in die .htaccess, vor den WordPress-Block. Viele Weiterleitungen auf einmal erzeugt der 301-Redirect-Generator aus einer Liste.

301, 302 oder 410?

Code Bedeutung Wann
301 dauerhaft verschoben Seite hat eine neue Adresse, Domainumzug, HTTPS-Umstellung. Google überträgt die Signale auf das Ziel.
302 vorübergehend Wartungsseite, A/B-Test, Aktion. Die alte URL bleibt im Index.
410 dauerhaft entfernt Seite gibt es nicht mehr und kein passender Ersatz. Wird schneller aus dem Index entfernt als 404.

Faustregel: Gibt es eine inhaltlich passende neue Seite, 301 dorthin. Gibt es keine, 410. Alle alten URLs pauschal auf die Startseite umzuleiten wertet Google als „Soft 404“, das bringt nichts.

Weiterleitungen für jeden Fall

Einzelne Seite

Redirect 301 /alte-seite.html https://deine-domain.de/neue-seite/

Die Quelle steht immer ohne Domain und mit führendem Schrägstrich, das Ziel als vollständige URL. Redirect stammt aus dem Modul mod_alias und ist die einfachste Variante.

Seite mit Parametern (?id=5)

Redirect ignoriert alles nach dem Fragezeichen. Dafür brauchst du mod_rewrite:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^id=5$
RewriteRule ^produkt\.php$ https://deine-domain.de/produkte/filezilla-pro/? [R=301,L]

Das ? am Ende des Ziels entfernt den alten Parameter.

Ganzer Ordner

RewriteEngine On
RewriteRule ^blog/(.*)$ https://deine-domain.de/ratgeber/$1 [R=301,L]

(.*) fängt den Rest der Adresse ein, $1 setzt ihn hinten wieder an. Aus /blog/ftp-tipps/ wird so /ratgeber/ftp-tipps/.

Komplette Domain umziehen

Diese Regel kommt in die .htaccess der alten Domain:

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

Pfade bleiben erhalten: alte-domain.de/kontakt/ landet auf neue-domain.de/kontakt/. Danach in der Google Search Console das Tool „Adressänderung“ nutzen.

HTTP auf HTTPS und www vereinheitlichen

RewriteEngine On
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

Eine Regel, ein Sprung: Alle Varianten (http, www, http+www) landen direkt auf https://deine-domain.de. Mehrere hintereinander geschaltete Weiterleitungen kosten Ladezeit.

Dateiendung entfernen (.html)

RewriteEngine On
RewriteCond %{THE_REQUEST} \s/([^.?\s]+)\.html[\s?]
RewriteRule ^ /%1 [R=301,L]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+?)/?$ $1.html [L]

Seite dauerhaft entfernen (410)

Redirect gone /alte-aktion.html

So baust du die Regeln ein

  1. Backup anlegen. Die aktuelle .htaccess per FileZilla herunterladen und lokal als htaccess-backup.txt sichern.
  2. Datei öffnen. In FileZilla Server → Auflistung versteckter Dateien erzwingen, dann Rechtsklick auf .htaccess → Ansehen/Bearbeiten. Mehr dazu: .htaccess-Datei erklärt.
  3. Regeln oben einfügen. Vor # BEGIN WordPress bzw. vor anderen Regeln. RewriteEngine On reicht einmal pro Datei.
  4. Speichern und hochladen. FileZilla fragt nach dem Speichern, ob die Datei zurück auf den Server soll.
  5. Testen im privaten Browserfenster und mit curl -I https://deine-domain.de/alte-seite.html. Die Antwort muss 301 und die richtige Location zeigen.

Typische Fehler

  • Weiterleitungsschleife: Das Ziel passt selbst wieder auf die Regel, etwa RewriteRule ^(.*)$ /neu/$1 ohne Bedingung. Mit RewriteCond %{REQUEST_URI} !^/neu/ ausschließen.
  • Regel unter dem WordPress-Block: WordPress fängt die Anfrage vorher ab, die Weiterleitung greift nie.
  • Browser zeigt alte Weiterleitung: 301 wird gecacht. Zum Testen privates Fenster oder curl nutzen, während der Entwicklung notfalls erst mit 302 arbeiten.
  • Sonderzeichen und Leerzeichen: In RewriteRule sind Punkt, Fragezeichen und Klammern Steuerzeichen. Einen echten Punkt schreibst du als \..
  • Server ist nginx: Dann wirkt keine .htaccess. Weiterleitungen über den Kundenbereich des Hosters oder ein Plugin einrichten.

Weiterleitungen in WordPress ohne .htaccess

Bei wenigen Weiterleitungen sind Plugins wie „Redirection“ bequem und überstehen Hosterwechsel, auch zu nginx. Bei hunderten URLs ist die .htaccess schneller, weil die Anfrage gar nicht erst bei PHP ankommt.

Häufige Fragen

Frage antippen, um die Antwort zu öffnen.

Wie lange muss eine 301-Weiterleitung bestehen bleiben?

Google empfiehlt mindestens ein Jahr. Besser: dauerhaft, solange alte Links auf die URL zeigen. Die Zeilen kosten nichts.

Verliere ich durch 301 Ranking?

Nein, nicht nennenswert, wenn das Ziel inhaltlich passt. Verluste entstehen durch Ketten (A → B → C), durch Weiterleitungen auf unpassende Seiten oder auf die Startseite.

Redirect oder RewriteRule – was ist besser?

Redirect für einfache Eins-zu-eins-Weiterleitungen, RewriteRule für Muster, Parameter und Bedingungen. Mische beide möglichst nicht in einer Datei, weil die Module in unterschiedlicher Reihenfolge arbeiten.