So wird gerechnet
Eine Weiterleitung ist eine Antwort des Servers mit einem 3xx-Statuscode und einem Location-Header. Der Browser oder eine Suchmaschine fragt dann stattdessen die neue Adresse ab. Der Generator schreibt die Weiterleitung so früh wie möglich: in Nginx als Serverblock, der nichts anderes tut, in Apache als Rewrite-Regeln am Anfang der .htaccess.
# Apache, .htaccess
RewriteRule ^old-page\.html$ /new-page [R=301,L]
# Nginx
location = /old-page.html {
return 301 /new-page;
} Apache vergleicht mit einem regulären Ausdruck, daher werden Punkte und andere Sonderzeichen in einem Pfad maskiert, und der führende Schrägstrich entfällt, weil .htaccess ihn entfernt. Nginx vergleicht eine exakte Location als reinen Text. Beide behalten den Query-String des Besuchers, es sei denn, die alte Adresse hatte selbst einen. Die Regeln für HTTPS und www führen in einem Schritt zur endgültigen Adresse, statt über zwei Weiterleitungen hintereinander.
Beispiel
Sie ziehen example.com auf www.example.com um: Anfragen an http://example.com/blog, http://www.example.com/blog und https://example.com/blog erhalten alle eine einzige 301 auf https://www.example.com/blog. Nur https://www.example.com wird normal ausgeliefert.
Welchen Statuscode Sie verwenden
| Code | Bedeutung | Verwenden für |
|---|---|---|
| 301 | Dauerhaft verschobenEine Seite oder Website, die für immer umgezogen ist. Suchmaschinen übertragen das Ranking der alten Adresse auf die neue. | Eine Seite oder Website, die für immer umgezogen ist. Suchmaschinen übertragen das Ranking der alten Adresse auf die neue. |
| 302 | Gefunden, vorübergehend woandersEin kurzer Umweg, etwa eine Aktionsseite oder Wartungsarbeiten. Die alte Adresse bleibt in den Suchergebnissen. | Ein kurzer Umweg, etwa eine Aktionsseite oder Wartungsarbeiten. Die alte Adresse bleibt in den Suchergebnissen. |
| 307 | Vorübergehend, gleiche MethodeWie 302, aber ein mit POST gesendetes Formular wird erneut mit POST gesendet. | Wie 302, aber ein mit POST gesendetes Formular wird erneut mit POST gesendet. |
| 308 | Dauerhaft, gleiche MethodeWie 301, behält aber POST. Nützlich für eine API oder einen Formular-Endpunkt, der umgezogen ist. | Wie 301, behält aber POST. Nützlich für eine API oder einen Formular-Endpunkt, der umgezogen ist. |
Fragen
Was ist der Unterschied zwischen einer 301- und einer 302-Weiterleitung?
Eine 301 sagt, dass die Adresse dauerhaft umgezogen ist: Browser merken sie sich, und Suchmaschinen ersetzen die alte Adresse durch die neue. Eine 302 sagt, dass der Umzug vorübergehend ist, die alte Adresse behält also ihren Platz. Verwenden Sie 301 für eine neue Domain, HTTPS oder eine umbenannte Seite; Google behandelt eine lange beibehaltene 302 ohnehin wie eine 301.
Soll ich www auf non-www weiterleiten oder umgekehrt?
Beides funktioniert für Suchmaschinen, solange Sie eine Form wählen und die andere darauf weiterleiten. Die kurze Form ist leichter zu tippen; www macht es einfacher, Cookies nur für die Website zu setzen und den Namen per CNAME-Eintrag auf ein CDN zu richten.
Warum läuft meine Weiterleitung in einer Schleife?
Meist, weil HTTPS an einem Proxy oder CDN endet und der Server jede Anfrage als http:// sieht und deshalb sogar die https://-Anfragen weiterleitet. Aktivieren Sie die Proxy-Option, um stattdessen den Header X-Forwarded-Proto zu prüfen. In Cloudflare vermeidet der SSL-Modus Full (strict) das Problem. Leeren Sie nach der Korrektur den Browser-Cache: Browser merken sich 301-Weiterleitungen.
Liest Nginx .htaccess-Dateien?
Nein. Nginx hat keine Konfigurationsdateien pro Ordner, daher müssen Regeln aus einer .htaccess-Datei in die Konfiguration des Servers geschrieben werden, wie im Nginx-Tab hier, und Nginx muss neu geladen werden. Dafür brauchen Sie Zugriff auf den Server, den ein VPS bietet und Shared Hosting meist nicht.