{"id":12000,"date":"2026-10-28T21:01:35","date_gmt":"2026-10-28T18:01:35","guid":{"rendered":"https:\/\/webmister.pro\/301-weiterleitung-htaccess\/"},"modified":"2026-10-28T21:01:35","modified_gmt":"2026-10-28T18:01:35","slug":"301-weiterleitung-htaccess","status":"publish","type":"post","link":"https:\/\/webmister.pro\/de\/301-weiterleitung-htaccess\/","title":{"rendered":"301-Weiterleitung in .htaccess: fertige Regeln"},"content":{"rendered":"<p>Eine 301-Weiterleitung ist eine Serverantwort, die Browser und Suchmaschinen-Crawler mitteilt: Die Seite ist dauerhaft umgezogen, hier ist ihre neue Adresse. Von anderen Wegen, einen Besucher weiterzuschicken, unterscheidet sie sich dadurch, dass sie nicht nur die Adresse, sondern auch das gesammelte Linkgewicht in den Index \u00fcbertr\u00e4gt. Unten stehen fertige Regeln f\u00fcr <code>.htaccess<\/code>, ihre nginx-Entsprechungen und die Fehler, die einen Umzug Traffic kosten.<\/p>\n<nav class=\"wppub-toc\" aria-label=\"Inhaltsverzeichnis\">\n<p class=\"wppub-toc__title\">Inhaltsverzeichnis<\/p>\n<ul class=\"wppub-toc__list\">\n<li class=\"wppub-toc__item\"><a class=\"wppub-toc__link\" href=\"#wie-es-funktioniert\">Wie es funktioniert<\/a><\/li>\n<li class=\"wppub-toc__item\"><a class=\"wppub-toc__link\" href=\"#regeln-fur-htaccess\">Regeln f\u00fcr .htaccess<\/a>\n<ul class=\"wppub-toc__list wppub-toc__list--sub\">\n<li class=\"wppub-toc__item wppub-toc__item--sub\"><a class=\"wppub-toc__link\" href=\"#eine-seite-auf-eine-andere\">Eine Seite auf eine andere<\/a><\/li>\n<li class=\"wppub-toc__item wppub-toc__item--sub\"><a class=\"wppub-toc__link\" href=\"#spiegel-zusammenfuhren-von-www-auf-ohne-www\">Spiegel zusammenf\u00fchren: von www auf ohne www<\/a><\/li>\n<li class=\"wppub-toc__item wppub-toc__item--sub\"><a class=\"wppub-toc__link\" href=\"#umstieg-auf-https\">Umstieg auf HTTPS<\/a><\/li>\n<li class=\"wppub-toc__item wppub-toc__item--sub\"><a class=\"wppub-toc__link\" href=\"#https-und-ohne-www-in-einer-regel\">HTTPS und ohne www in einer Regel<\/a><\/li>\n<li class=\"wppub-toc__item wppub-toc__item--sub\"><a class=\"wppub-toc__link\" href=\"#schragstrich-am-ende-der-adresse\">Schr\u00e4gstrich am Ende der Adresse<\/a><\/li>\n<li class=\"wppub-toc__item wppub-toc__item--sub\"><a class=\"wppub-toc__link\" href=\"#umzug-auf-eine-neue-domain\">Umzug auf eine neue Domain<\/a><\/li>\n<li class=\"wppub-toc__item wppub-toc__item--sub\"><a class=\"wppub-toc__link\" href=\"#bereich-auf-bereich-und-adressen-mit-parametern\">Bereich auf Bereich und Adressen mit Parametern<\/a><\/li>\n<\/ul>\n<\/li>\n<li class=\"wppub-toc__item\"><a class=\"wppub-toc__link\" href=\"#dasselbe-unter-nginx\">Dasselbe unter nginx<\/a><\/li>\n<li class=\"wppub-toc__item\"><a class=\"wppub-toc__link\" href=\"#haufige-fehler\">H\u00e4ufige Fehler<\/a><\/li>\n<li class=\"wppub-toc__item\"><a class=\"wppub-toc__link\" href=\"#wie-man-pruft\">Wie man pr\u00fcft<\/a><\/li>\n<li class=\"wppub-toc__item\"><a class=\"wppub-toc__link\" href=\"#das-wichtigste-in-kurze\">Das Wichtigste in K\u00fcrze<\/a><\/li>\n<\/ul>\n<\/nav>\n<h2 id=\"wie-es-funktioniert\">Wie es funktioniert<\/h2>\n<p>Der Server beantwortet die Anfrage mit Code 301 und dem Header <code>Location<\/code>, der die neue Adresse enth\u00e4lt. Der Browser folgt sofort, f\u00fcr den Besucher meist unbemerkt, und merkt sich den Sprung. Die Suchmaschine macht dasselbe: Sie ersetzt die alte URL im Index durch die neue und gibt das Linkgewicht weiter.<\/p>\n<figure><svg viewbox=\"0 0 900 300\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"\u041a\u0430\u043a \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 301 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442: \u0437\u0430\u043f\u0440\u043e\u0441, \u043e\u0442\u0432\u0435\u0442 \u0441\u0435\u0440\u0432\u0435\u0440\u0430 \u0441 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u043e\u043c Location \u0438 \u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441\" style=\"width:100%;height:auto;max-width:900px;display:block;margin:0 auto 20px\"><rect fill=\"#16181B\" stroke=\"#3B3B3B\" stroke-width=\"1\" x=\"20\" y=\"40\" width=\"200\" height=\"90\" rx=\"2\"><\/rect><text fill=\"#EEEEEE\" font-weight=\"400\" font-size=\"16px\" font-family=\"Roboto, Arial, sans-serif\" x=\"42\" y=\"76\">Browser oder Crawler<\/text><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"42\" y=\"100\">GET \/old-page\/<\/text><path stroke=\"#4A4A4A\" stroke-width=\"1.5\" fill=\"none\" d=\"M220 85 h100 m-12 -6 l12 6 l-12 6\"><\/path><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"236\" y=\"74\">Anfrage<\/text><rect fill=\"#15202A\" stroke=\"#30738E\" stroke-width=\"1.5\" x=\"320\" y=\"26\" width=\"260\" height=\"118\" rx=\"2\"><\/rect><text fill=\"#EEEEEE\" font-weight=\"400\" font-size=\"16px\" font-family=\"Roboto, Arial, sans-serif\" x=\"342\" y=\"60\">Server<\/text><text fill=\"#30738E\" font-weight=\"400\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"342\" y=\"88\">301 Moved Permanently<\/text><text fill=\"#30738E\" font-weight=\"400\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"342\" y=\"112\">Location: \/new-page\/<\/text><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"342\" y=\"134\">Regel aus .htaccess<\/text><path stroke=\"#4A4A4A\" stroke-width=\"1.5\" fill=\"none\" d=\"M580 85 h100 m-12 -6 l12 6 l-12 6\"><\/path><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"596\" y=\"74\">Weiterleitung<\/text><rect fill=\"#16181B\" stroke=\"#3B3B3B\" stroke-width=\"1\" x=\"680\" y=\"40\" width=\"200\" height=\"90\" rx=\"2\"><\/rect><text fill=\"#EEEEEE\" font-weight=\"400\" font-size=\"16px\" font-family=\"Roboto, Arial, sans-serif\" x=\"702\" y=\"76\">Neue Adresse<\/text><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"702\" y=\"100\">200 OK, Seite ge\u00f6ffnet<\/text><rect fill=\"#16181B\" stroke=\"#3B3B3B\" stroke-width=\"1\" x=\"20\" y=\"176\" width=\"860\" height=\"96\" rx=\"2\"><\/rect><text fill=\"#EEEEEE\" font-weight=\"400\" font-size=\"16px\" font-family=\"Roboto, Arial, sans-serif\" x=\"44\" y=\"208\">Was f\u00fcr die Suche z\u00e4hlt<\/text><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"44\" y=\"234\">301 sagt \u201edie Adresse hat sich dauerhaft ge\u00e4ndert\u201c: die Suchmaschine verschiebt die Seite samt Linkgewicht im Index.<\/text><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"44\" y=\"258\">302 bedeutet vor\u00fcbergehend \u2014 die alte Adresse bleibt im Index, Gewicht wird nicht \u00fcbertragen.<\/text><\/svg><figcaption>Die Kette der Anfrage: der Server antwortet mit 301 und nennt die neue Adresse<\/figcaption><\/figure>\n<p>Der Unterschied zwischen den Codes ist wichtig und kostet Geld:<\/p>\n<div class=\"wm-table-scroll wm-table-cards\" tabindex=\"0\" role=\"region\" aria-label=\"Tabelle, horizontal scrollbar\">\n<table>\n<thead>\n<tr>\n<th>Code<\/th>\n<th>Bedeutung<\/th>\n<th>Wann einsetzen<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td data-label=\"Code\"><strong>301<\/strong><\/td>\n<td data-label=\"Bedeutung\">Dauerhaft umgezogen<\/td>\n<td data-label=\"Wann einsetzen\">Domainwechsel, neue Seitenadresse, Spiegel zusammenf\u00fchren, Umstieg auf HTTPS<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Code\"><strong>302<\/strong><\/td>\n<td data-label=\"Bedeutung\">Vor\u00fcbergehend<\/td>\n<td data-label=\"Wann einsetzen\">Aktion \u00fcber zwei Wochen, Wartung, A\/B-Test<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Code\"><strong>307<\/strong><\/td>\n<td data-label=\"Bedeutung\">Vor\u00fcbergehend, Anfragemethode bleibt<\/td>\n<td data-label=\"Wann einsetzen\">Dasselbe, aber f\u00fcr POST-Anfragen<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Code\"><strong>308<\/strong><\/td>\n<td data-label=\"Bedeutung\">Dauerhaft, Methode bleibt<\/td>\n<td data-label=\"Wann einsetzen\">Seltener Fall: API-Umzug, bei dem POST z\u00e4hlt<\/td>\n<\/tr>\n<tr>\n<td data-label=\"Code\"><strong>410<\/strong><\/td>\n<td data-label=\"Bedeutung\">Endg\u00fcltig gel\u00f6scht<\/td>\n<td data-label=\"Wann einsetzen\">Die Seite existiert nicht mehr und hat keinen Ersatz<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>301 und 302 zu verwechseln ist der teuerste Fehler dieser Liste: Bei 302 beh\u00e4lt die Suchmaschine die alte Adresse im Index und \u00fcbertr\u00e4gt kein Gewicht.<\/p>\n<h2 id=\"regeln-fur-htaccess\">Regeln f\u00fcr .htaccess<\/h2>\n<p>Alle Beispiele setzen Apache mit aktivem <code>mod_rewrite<\/code> voraus. Der Regelblock geh\u00f6rt an den Anfang der <code>.htaccess<\/code> im Stammverzeichnis \u2014 vor die Regeln des CMS, sonst f\u00e4ngt WordPress die Anfrage zuerst ab.<\/p>\n<pre><code>RewriteEngine On\nRewriteBase \/<\/code><\/pre>\n<h3 id=\"eine-seite-auf-eine-andere\">Eine Seite auf eine andere<\/h3>\n<pre><code># die einfache Variante\nRedirect 301 \/old-page\/ https:\/\/site.com\/new-page\/\n\n# dasselbe \u00fcber mod_rewrite, wenn die \u00fcbrigen Regeln ebenfalls darauf laufen\nRewriteRule ^old-page\/?$ https:\/\/site.com\/new-page\/ [R=301,L]<\/code><\/pre>\n<h3 id=\"spiegel-zusammenfuhren-von-www-auf-ohne-www\">Spiegel zusammenf\u00fchren: von www auf ohne www<\/h3>\n<pre><code>RewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]\nRewriteRule ^(.*)$ https:\/\/%1\/$1 [R=301,L]<\/code><\/pre>\n<p>Der umgekehrte Fall, wenn die Domain mit www der Hauptspiegel ist:<\/p>\n<pre><code>RewriteCond %{HTTP_HOST} !^www. [NC]\nRewriteRule ^(.*)$ https:\/\/www.%{HTTP_HOST}\/$1 [R=301,L]<\/code><\/pre>\n<h3 id=\"umstieg-auf-https\">Umstieg auf HTTPS<\/h3>\n<pre><code>RewriteCond %{HTTPS} !=on\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}\/$1 [R=301,L]<\/code><\/pre>\n<p>Hinter Cloudflare oder einem anderen Proxy greift die Bedingung <code>%{HTTPS}<\/code> nicht \u2014 die Anfrage erreicht den Server bereits \u00fcber HTTP. Dort pr\u00fcft man den Header:<\/p>\n<pre><code>RewriteCond %{HTTP:X-Forwarded-Proto} !https\nRewriteRule ^(.*)$ https:\/\/%{HTTP_HOST}\/$1 [R=301,L]<\/code><\/pre>\n<h3 id=\"https-und-ohne-www-in-einer-regel\">HTTPS und ohne www in einer Regel<\/h3>\n<p>Der entscheidende Kniff dieses Abschnitts: keine zwei Regeln hintereinander, sonst entsteht eine Kette aus zwei Spr\u00fcngen.<\/p>\n<pre><code>RewriteCond %{HTTPS} !=on [OR]\nRewriteCond %{HTTP_HOST} ^www.(.+)$ [NC]\nRewriteRule ^(.*)$ https:\/\/site.com\/$1 [R=301,L]<\/code><\/pre>\n<h3 id=\"schragstrich-am-ende-der-adresse\">Schr\u00e4gstrich am Ende der Adresse<\/h3>\n<pre><code># Schr\u00e4gstrich hinzuf\u00fcgen\nRewriteCond %{REQUEST_FILENAME} !-f\nRewriteCond %{REQUEST_URI} !.[a-zA-Z0-9]{1,5}$\nRewriteCond %{REQUEST_URI} !\/$\nRewriteRule ^(.*)$ \/$1\/ [R=301,L]\n\n# Schr\u00e4gstrich entfernen\nRewriteCond %{REQUEST_FILENAME} !-d\nRewriteRule ^(.*)\/$ \/$1 [R=301,L]<\/code><\/pre>\n<p>Die Bedingungen mit <code>!-f<\/code> und <code>!-d<\/code> sind keine Formsache: Ohne sie schreibt die Regel auch Bildadressen und vorhandene Verzeichnisse um.<\/p>\n<h3 id=\"umzug-auf-eine-neue-domain\">Umzug auf eine neue Domain<\/h3>\n<pre><code># mit Beibehaltung der Seitenadressen \u2014 so geh\u00f6rt es gemacht\nRewriteCond %{HTTP_HOST} ^(www.)?old-site.com$ [NC]\nRewriteRule ^(.*)$ https:\/\/new-site.com\/$1 [R=301,L]\n\n# alles auf die Startseite \u2014 nur wenn die neue Struktur v\u00f6llig anders ist\nRewriteRule ^(.*)$ https:\/\/new-site.com\/ [R=301,L]<\/code><\/pre>\n<p>Die zweite Variante werten Suchmaschinen oft als \u201esoft 404\u201c und \u00fcbertragen kein Gewicht. Bilden Sie Adresse auf Adresse ab, wo immer es geht, und schicken Sie nur das auf die Startseite, wof\u00fcr es keinen Ersatz gibt.<\/p>\n<h3 id=\"bereich-auf-bereich-und-adressen-mit-parametern\">Bereich auf Bereich und Adressen mit Parametern<\/h3>\n<pre><code># \/blog\/artikel\/ \u2192 \/news\/artikel\/\nRewriteRule ^blog\/(.*)$ \/news\/$1 [R=301,L]\n\n# ?id=12 \u2192 \/catalog\/sofa\/\nRewriteCond %{QUERY_STRING} (^|&amp;)id=12(&amp;|$)\nRewriteRule ^index.php$ \/catalog\/sofa\/? [R=301,L]<\/code><\/pre>\n<p>Das Fragezeichen am Ende des Ziels verwirft die urspr\u00fcngliche Parameterzeile \u2014 ohne es h\u00e4ngt sie sich an die neue Adresse.<\/p>\n<h2 id=\"dasselbe-unter-nginx\">Dasselbe unter nginx<\/h2>\n<p>nginx kennt keine <code>.htaccess<\/code>: Die Regeln stehen in der Serverkonfiguration und greifen nach <code>nginx -t<\/code> und einem Reload.<\/p>\n<pre><code>server {\n    listen 80;\n    server_name www.site.com site.com;\n    return 301 https:\/\/site.com$request_uri;\n}\n\n# eine Seite auf eine andere\nlocation = \/old-page\/ {\n    return 301 https:\/\/site.com\/new-page\/;\n}\n\n# Bereich auf Bereich\nrewrite ^\/blog\/(.*)$ \/news\/$1 permanent;<\/code><\/pre>\n<p><code>return 301<\/code> ist schneller als <code>rewrite<\/code> und liest sich eindeutig, deshalb nimmt man f\u00fcr einfache F\u00e4lle genau das.<\/p>\n<h2 id=\"haufige-fehler\">H\u00e4ufige Fehler<\/h2>\n<figure><svg viewbox=\"0 0 900 290\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" role=\"img\" aria-label=\"\u0426\u0435\u043f\u043e\u0447\u043a\u0430 \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0432 \u043f\u0440\u043e\u0442\u0438\u0432 \u043e\u0434\u043d\u043e\u0433\u043e \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0440\u0435\u0434\u0438\u0440\u0435\u043a\u0442\u0430\" style=\"width:100%;height:auto;max-width:900px;display:block;margin:0 auto 20px\"><text fill=\"#848484\" letter-spacing=\"1px\" font-weight=\"400\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"20\" y=\"30\">SO L\u00c4UFT ES OFT: VIER SPR\u00dcNGE STATT EINEM<\/text><rect fill=\"#1E1618\" stroke=\"#5A3B40\" stroke-width=\"1\" x=\"20\" y=\"48\" width=\"180\" height=\"48\" rx=\"2\"><\/rect><text fill=\"#CBCBCB\" font-weight=\"300\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"36\" y=\"78\">http:\/\/www.site.com<\/text><path stroke=\"#7A5057\" stroke-width=\"1.5\" fill=\"none\" d=\"M200 72 h36 m-10 -5 l10 5 l-10 5\"><\/path><rect fill=\"#1E1618\" stroke=\"#5A3B40\" stroke-width=\"1\" x=\"236\" y=\"48\" width=\"160\" height=\"48\" rx=\"2\"><\/rect><text fill=\"#CBCBCB\" font-weight=\"300\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"252\" y=\"78\">http:\/\/site.com<\/text><path stroke=\"#7A5057\" stroke-width=\"1.5\" fill=\"none\" d=\"M396 72 h36 m-10 -5 l10 5 l-10 5\"><\/path><rect fill=\"#1E1618\" stroke=\"#5A3B40\" stroke-width=\"1\" x=\"432\" y=\"48\" width=\"170\" height=\"48\" rx=\"2\"><\/rect><text fill=\"#CBCBCB\" font-weight=\"300\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"448\" y=\"78\">https:\/\/site.com<\/text><path stroke=\"#7A5057\" stroke-width=\"1.5\" fill=\"none\" d=\"M602 72 h36 m-10 -5 l10 5 l-10 5\"><\/path><rect fill=\"#1E1618\" stroke=\"#5A3B40\" stroke-width=\"1\" x=\"638\" y=\"48\" width=\"242\" height=\"48\" rx=\"2\"><\/rect><text fill=\"#CBCBCB\" font-weight=\"300\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"654\" y=\"78\">https:\/\/site.com\/page\/<\/text><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"20\" y=\"124\">Jeder Sprung ist eine eigene Anfrage: l\u00e4ngere Ladezeit, Gewichtsverlust, verbrauchtes Crawl-Budget<\/text><text fill=\"#848484\" letter-spacing=\"1px\" font-weight=\"400\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"20\" y=\"176\">RICHTIG: EINE REGEL, EIN SPRUNG<\/text><rect fill=\"#15202A\" stroke=\"#30738E\" stroke-width=\"1\" x=\"20\" y=\"194\" width=\"180\" height=\"48\" rx=\"2\"><\/rect><text fill=\"#CBCBCB\" font-weight=\"300\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"36\" y=\"224\">http:\/\/www.site.com<\/text><path stroke=\"#30738E\" stroke-width=\"1.5\" fill=\"none\" d=\"M200 218 h420 m-12 -6 l12 6 l-12 6\"><\/path><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"330\" y=\"208\">ein 301<\/text><rect fill=\"#15202A\" stroke=\"#30738E\" stroke-width=\"1\" x=\"620\" y=\"194\" width=\"260\" height=\"48\" rx=\"2\"><\/rect><text fill=\"#CBCBCB\" font-weight=\"300\" font-size=\"14px\" font-family=\"Roboto, Arial, sans-serif\" x=\"636\" y=\"224\">https:\/\/site.com\/page\/<\/text><text fill=\"#848484\" font-weight=\"300\" font-size=\"13px\" font-family=\"Roboto, Arial, sans-serif\" x=\"20\" y=\"272\">Eine Zeile gen\u00fcgt: curl -sIL https:\/\/site.com\/page\/ \u2014 in der Antwort darf genau ein 301 stehen<\/text><\/svg><figcaption>Eine Kette mehrerer Spr\u00fcnge und wie es stattdessen aussehen sollte<\/figcaption><\/figure>\n<ul>\n<li><strong>Weiterleitungskette.<\/strong> www \u2192 ohne www \u2192 https \u2192 Schr\u00e4gstrich: vier Anfragen statt einer. Fassen Sie die Bedingungen in einer Regel zusammen.<\/li>\n<li><strong>Schleife.<\/strong> Eine Regel schickt die Seite auf sich selbst, der Browser zeigt <code>ERR_TOO_MANY_REDIRECTS<\/code>. Meist liegt es an einer HTTPS-Weiterleitung hinter einem Proxy \u00fcber <code>%{HTTPS}<\/code>.<\/li>\n<li><strong>302 statt 301.<\/strong> Der Umzug ist erledigt, das Gewicht bleibt auf der alten Adresse.<\/li>\n<li><strong>Alles auf die Startseite.<\/strong> Hunderte Seiten pauschal auf die Wurzel zu leiten liest die Suchmaschine als verkappten 404.<\/li>\n<li><strong>Regeln hinter dem CMS-Block.<\/strong> In der <code>.htaccess<\/code> greift WordPress zuerst zu und Ihre Regel l\u00e4uft nie: Setzen Sie den eigenen Block dar\u00fcber.<\/li>\n<li><strong>Weiterleitung statt Canonical.<\/strong> Werden beide Seiten von Menschen gebraucht und doppelt sich nur der Inhalt, geh\u00f6rt dorthin <code>rel=\"canonical\"<\/code> und keine 301.<\/li>\n<li><strong>Vergessene interne Links.<\/strong> Nach dem Umzug m\u00fcssen Links im Inneren direkt auf die neue Adresse zeigen, sonst l\u00e4uft jeder Klick \u00fcber die Weiterleitung.<\/li>\n<\/ul>\n<h2 id=\"wie-man-pruft\">Wie man pr\u00fcft<\/h2>\n<p>Am schnellsten geht es im Terminal. <code>-I<\/code> fragt nur die Header ab, <code>-L<\/code> folgt der Kette bis zum Ende:<\/p>\n<pre><code>curl -sIL https:\/\/site.com\/old-page\/ | grep -E \"HTTP\/|Location\"<\/code><\/pre>\n<p>Die richtige Antwort sieht so aus: ein <code>HTTP\/1.1 301<\/code>, ein <code>Location<\/code> und danach <code>HTTP\/2 200<\/code>. Zwei oder mehr 301 hintereinander sind eine Kette und geh\u00f6ren zusammengelegt. In der Search Console steht dasselbe im Bericht \u201eSeitenindexierung\u201c, im Browser im Tab Network bei aktivem \u201ePreserve log\u201c.<\/p>\n<p>Pr\u00fcfen Sie nach einem gro\u00dfen Umzug eine Stichprobe von zwei bis drei Dutzend Adressen: Startseite, Kategorien, Produktseiten, Adressen mit Parametern und die Adressen aus den oberen Suchergebnissen.<\/p>\n<h2 id=\"das-wichtigste-in-kurze\">Das Wichtigste in K\u00fcrze<\/h2>\n<p>301 f\u00fcr den dauerhaften Umzug, 302 f\u00fcr den vor\u00fcbergehenden, 410 f\u00fcr das, was es nicht mehr gibt. Geschrieben wird eine Regel, die direkt auf die Zieladresse f\u00fchrt, ohne Zwischenschritte. Und pr\u00fcfen geh\u00f6rt immer dazu \u2014 <code>curl -sIL<\/code> beantwortet die Frage in einer Sekunde.<\/p>\n<p>Steht ein gro\u00dfer Umzug an \u2014 neue Domain, Zusammenlegung von Websites, Wechsel auf HTTPS mit neuer Adressstruktur \u2014 <a href=\"https:\/\/webmister.pro\/de\/contacts\/\">schreiben Sie uns<\/a>: Wir erstellen die Zuordnungskarte und ziehen so um, dass der Traffic bleibt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fertige Regeln f\u00fcr die 301-Weiterleitung in .htaccess und nginx: Spiegel zusammenf\u00fchren, HTTPS, Schr\u00e4gstrich, Domainumzug \u2014 und die Fehler, die Traffic kosten.<\/p>\n","protected":false},"author":1,"featured_media":12027,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[214],"tags":[],"class_list":["post-12000","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html-css-de"],"acf":[],"_links":{"self":[{"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/posts\/12000","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/comments?post=12000"}],"version-history":[{"count":0,"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/posts\/12000\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/media\/12027"}],"wp:attachment":[{"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/media?parent=12000"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/categories?post=12000"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webmister.pro\/de\/wp-json\/wp\/v2\/tags?post=12000"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}