Weiterleitungen in WordPress
In WordPress kannst du URLs auf mehreren Wegen weiterleiten: per Plugin, per Regel in der .htaccess oder mit ein paar Zeilen PHP. Hier erfährst du, welcher Weg wann passt und wie du die typischen Stolperfallen mit Caching und HTTPS umgehst.
Welche Methode ist die richtige?
Mit allen Methoden bekommst du eine saubere 301- oder 302-Antwort. Der Unterschied liegt darin, wo der Redirect passiert und wer ihn pflegt:
| Methode | Läuft | Geeignet für |
|---|---|---|
| Redirect-Plugin | In PHP, nachdem WordPress geladen ist | Redakteure ohne Serverzugang, einzelne URLs, 404-Überwachung |
.htaccess / nginx-Konfiguration | Im Webserver, bevor PHP startet | Ganze Domains, HTTP auf HTTPS, www, große Regelwerke |
PHP (wp_redirect()) | In deinem Theme- oder Plugin-Code | Weiterleitungen mit Logik, etwa abhängig von Benutzerrolle oder Metadaten |
Redirects auf Serverebene sind am schnellsten, weil WordPress gar nicht erst startet. Plugins sind am bequemsten. Leg für jede Art von Regel einen festen Ort fest – sonst leitest du irgendwann dieselbe URL auf zwei Ebenen doppelt weiter.
Redirect-Plugins
Drei verbreitete Plugins decken die meisten Fälle ab. Alle speichern die Regeln in der Datenbank und senden den Redirect aus PHP:
- Redirection (kostenlos): ein reiner Redirect-Manager. Du wählst den Statuscode pro Regel, kannst reguläre Ausdrücke nutzen, nach Login-Status, Browser oder Referrer unterscheiden und 404-Fehler protokollieren – so siehst du, welche alten URLs noch Besucher bekommen. Regeln lassen sich auch im
.htaccess- oder nginx-Format exportieren. - Yoast SEO Premium: Der Redirect-Manager gehört zur kostenpflichtigen Version. Änderst du den Slug eines Beitrags oder löschst ihn, bietet Yoast direkt an, eine Weiterleitung anzulegen. Die Regeln landen wahlweise in der Datenbank oder in einer Server-Konfigurationsdatei.
- Rank Math: Schon die kostenlose Version enthält ein Redirections-Modul mit 301, 302, 307, 410 und 451, Regex-Unterstützung und optionalen automatischen Weiterleitungen bei Slug-Änderungen.
Nutzt du Yoast oder Rank Math ohnehin, reicht deren Redirect-Manager meist aus. Brauchst du ausführliche Logs oder Bedingungen, ist Redirection das spezialisiertere Werkzeug. Zwei Redirect-Manager gleichzeitig solltest du vermeiden.
Was WordPress von selbst weiterleitet
Einige Weiterleitungen erledigt WordPress auch ohne Plugin:
- Änderst du den Slug eines veröffentlichten Beitrags, merkt sich WordPress den alten Slug und leitet ihn per 301 auf die neue URL weiter (Funktion
wp_old_slug_redirect()). Das greift nicht in jedem Fall bei Seiten und auch nicht, wenn du die Permalink-Struktur umstellst. - Der Canonical Redirect (
redirect_canonical()) leitet?p=123auf den sprechenden Permalink um, ergänzt oder entfernt den Slash am Ende passend zu deiner Struktur und korrigiert den Hostnamen, wenn er nicht zur Website-Adresse passt.
Permalink-Struktur ändern
Stellst du unter Einstellungen → Permalinks etwa von /2024/05/mein-beitrag/ auf /mein-beitrag/ um, ändern sich alle Beitrags-URLs auf einen Schlag. WordPress versucht zwar, bei manchen alten URLs den passenden Beitrag zu erraten, darauf solltest du dich aber nicht verlassen. Leg lieber eine Muster-Weiterleitung an, in der .htaccess zum Beispiel so:
RewriteEngine On
RewriteRule ^[0-9]{4}/[0-9]{2}/([^/]+)/?$ /$1/ [R=301,L]
Im Plugin Redirection trägst du dasselbe Muster als Regex-Regel ein: Quelle ^/\d{4}/\d{2}/([^/]+)/?$, Ziel /$1/. Prüf danach ein paar alte URLs mit dem Redirect-Checker und achte darauf, dass jede in genau einem Schritt auf der neuen URL landet.
Weiterleitungen in der .htaccess
Auf Apache-Hosting schreibt WordPress einen eigenen Block in die .htaccess. Deine Regeln gehören über # BEGIN WordPress: Alles zwischen den Markierungen überschreibt WordPress beim Speichern der Permalinks, und die Sammelregel dort schickt jede Anfrage an index.php – Regeln darunter werden also womöglich nie erreicht.
# Eigene Weiterleitungen
RewriteEngine On
RewriteRule ^alte-seite/?$ /neue-seite/ [R=301,L]
RewriteRule ^shop/(.*)$ https://shop.example.com/$1 [R=301,L]
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Weitere Muster findest du im Ratgeber zur .htaccess-Weiterleitung, und der .htaccess-Generator baut dir die Regeln zusammen. Unter nginx gibt es keine .htaccess; dort nutzt du return 301 im Server-Block, wie im nginx-Ratgeber beschrieben.
Weiterleiten mit PHP: wp_redirect() und wp_safe_redirect()
Für Weiterleitungen mit Logik hängst du dich in einem kleinen Plugin oder in der functions.php deines Themes an den Hook template_redirect. Er läuft, nachdem WordPress weiß, welcher Inhalt angefragt wird, aber bevor irgendetwas ausgegeben wurde.
add_action('template_redirect', function () {
if (is_page('alter-kontakt')) {
wp_safe_redirect(home_url('/kontakt/'), 301);
exit;
}
});
Drei Details sind wichtig:
- Gib den Statuscode an. Beide Funktionen senden standardmäßig
302. Für einen dauerhaften Umzug übergibst du301als zweites Argument. - Ruf
exitauf. Die Funktionen setzen nur denLocation-Header und beenden das Skript nicht. Ohneexitrendert WordPress die Seite einfach weiter. - Nimm lieber
wp_safe_redirect(). Die Funktion erlaubt nur den eigenen Host und Hosts, die du über den Filterallowed_redirect_hostsfreigibst. Das schützt vor Open Redirects, wenn das Ziel aus Benutzereingaben stammt.wp_redirect()akzeptiert dagegen jede URL.
Willst du mit wp_safe_redirect() auf eine fremde Domain weiterleiten, gib sie vorher frei:
add_filter('allowed_redirect_hosts', function (array $hosts): array {
$hosts[] = 'shop.example.com';
return $hosts;
});
Website-Adresse ändern oder auf eine neue Domain umziehen
Die Adresse der Website legst du unter Einstellungen → Allgemein fest (WordPress-Adresse und Website-Adresse) oder – mit Vorrang – in der wp-config.php:
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
URLs in Beitragsinhalten, Menüs oder Widgets ändern sich dadurch nicht. Die ersetzt du in der Datenbank, zum Beispiel mit WP-CLI (vorher Backup machen und zuerst mit --dry-run testen):
wp search-replace 'https://alt.example.com' 'https://example.com' --skip-columns=guid
Anschließend leitest du die alte Domain auf Serverebene per 301 weiter – und zwar pfadgenau, damit alt.example.com/blog/beitrag/ auf example.com/blog/beitrag/ führt und nicht auf die Startseite. Den kompletten Ablauf inklusive Search Console findest du in der Checkliste zum Domain-Umzug.
Typische Stolperfallen
Caching-Plugins
Seiten-Caches wie WP Super Cache, W3 Total Cache oder WP Rocket, aber auch Varnish oder ein CDN liefern oft eine gespeicherte Kopie aus, bevor PHP überhaupt läuft. Ein Redirect, den du per Plugin anlegst, wirkt dann erst, wenn der Cache für diese URL geleert ist. Leere also nach neuen Weiterleitungen den Cache und schau dir die Response-Header im Checker an: Siehst du weiterhin eine 200 mit Cache-Header, kommt noch die alte Kopie.
Redirect-Schleifen mit SSL hinter einem Proxy
Beendet ein Load Balancer, Reverse Proxy oder Cloudflare die HTTPS-Verbindung und spricht per HTTP mit deinem Server, hält WordPress die Anfrage für unverschlüsselt. Beginnt die Website-Adresse mit https://, leitet WordPress auf HTTPS um, der Proxy schickt die nächste Anfrage wieder per HTTP – und du landest in einer Endlosschleife (ERR_TOO_MANY_REDIRECTS). Teil WordPress das ursprüngliche Protokoll in der wp-config.php mit, oberhalb der Zeile /* That's all, stop editing! */:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
Mach das nur, wenn dein Proxy den Header zuverlässig setzt. Bei Cloudflare ist die sauberere Lösung, den SSL/TLS-Modus von „Flexibel“ auf „Vollständig (streng)“ umzustellen und auf dem Server ein Zertifikat einzurichten. Mehr dazu im Ratgeber HTTP auf HTTPS weiterleiten und im Cloudflare-Ratgeber.
Ketten nach mehreren Änderungen
Wurde ein Beitrag zweimal umbenannt, entsteht schnell /a/ → /b/ → /c/. Pass alte Regeln so an, dass sie direkt auf die finale URL zeigen. Wie du solche Ketten findest und auflöst, liest du unter Redirect-Ketten.
Häufige Fragen
- Brauche ich für Weiterleitungen in WordPress ein Plugin?
Nein. Du kannst Regeln unter Apache in die
.htaccessschreiben, in die nginx-Konfiguration eintragen oder in PHPwp_safe_redirect()verwenden. Ein Plugin lohnt sich, wenn Redakteure ohne Serverzugang Weiterleitungen pflegen sollen oder du ein 404-Log möchtest.- Sendet wp_redirect() einen 301 oder einen 302?
Standardmäßig einen
302. Übergib den Status als zweites Argument, etwawp_safe_redirect($url, 301);, und ruf direkt danachexit;auf.- Warum funktioniert meine WordPress-Weiterleitung nicht?
Meist liefert ein Seiten-Cache noch eine alte Kopie, die
.htaccess-Regeln stehen unter dem WordPress-Block oder nachwp_redirect()fehlt dasexit. Auch dein Browser kann einen älteren 301 gecacht haben. Teste die URL mit dem Redirect-Checker, der deinen Browser-Cache nicht nutzt.- Wie behebe ich ERR_TOO_MANY_REDIRECTS in WordPress?
In der Regel erkennt WordPress HTTPS nicht, weil ein Proxy oder CDN die Verschlüsselung beendet. Setz in der
wp-config.phpanhand vonX-Forwarded-Protoden Wert$_SERVER['HTTPS'] = 'on'oder stell Cloudflare auf „Vollständig (streng)“. Prüf außerdem, ob Website-Adresse und Serverregeln bei www und HTTPS übereinstimmen.
Passende Ratgeber
-
.htaccess-Weiterleitung auf Apache
So leitest du einzelne Seiten und ganze Domains per .htaccess weiter: mod_alias oder mod_rewrite, fertige Regeln für die typischen Fälle und wie du Schleifen und Ketten vermeidest.
-
Weiterleitungen mit nginx
Fertige nginx-Konfiguration für 301-Weiterleitungen: einzelne Seiten, Muster, ganze Domains, HTTPS und www in einem Hop und Hunderte URLs per map.
-
Weiterleitungen mit Cloudflare
Cloudflare kann Weiterleitungen direkt am Edge beantworten, bevor eine Anfrage deinen Server erreicht. So funktionieren Single Redirects, Bulk Redirects und Always Use HTTPS – und so verhinderst du, dass sie sich mit deinem Server in die Quere kommen.
-
Weiterleitungen in Next.js
In Next.js kannst du an vier Stellen weiterleiten: in der Konfiguration, in der Middleware, im Servercode des App Routers und über die Option trailingSlash. Jede davon sendet standardmäßig andere Statuscodes – es lohnt sich also, die Unterschiede zu kennen.
-
Weiterleitungen bei Vercel und Netlify
Bei Vercel und Netlify fasst du keine Webserver-Konfiguration an. Weiterleitungen stehen in einer Datei in deinem Repository oder im Dashboard, und das Edge-Netzwerk der Plattform liefert sie aus. So funktionieren beide – und hier unterscheiden sie sich.
-
Weiterleitungen mit Microsoft IIS
IIS bietet dir zwei Wege für Weiterleitungen: die eingebaute HTTP-Umleitung und das URL-Rewrite-Modul. Hier erfährst du, wann du welches nimmst – mit web.config-Beispielen zum Kopieren.