Einführung
HTTP-Weiterleitung ist eine Möglichkeit, eine Domain oder Adresse auf eine andere zu verweisen. Es gibt einige verschiedene Arten von Weiterleitungen, von denen jede etwas anderes für den Client-Browser bedeutet. Die beiden häufigsten Arten sind temporäre Weiterleitungen und permanente Weiterleitungen.
Temporäre Weiterleitungen (Antwort-Statuscode 302 Gefunden) sind nützlich, wenn eine URL vorübergehend von einem anderen Ort aus bedient werden muss. Wenn Sie beispielsweise Wartungsarbeiten an Ihrer Website durchführen, möchten Sie möglicherweise eine temporäre Weiterleitung von Ihrer Domain zu einer Erklärungsseite verwenden, um Ihren Besuchern mitzuteilen, dass Sie bald zurück sein werden.
Permanente Weiterleitungen (Antwort-Statuscode 301 Dauerhaft verschoben) informieren hingegen den Browser darüber, dass er die alte Adresse vollständig vergessen und nicht mehr darauf zugreifen sollte. Diese sind nützlich, wenn Ihre Inhalte dauerhaft an einen neuen Ort verschoben wurden, z. B. wenn Sie die Domainnamen ändern.
Dieser Leitfaden wird eine ausführlichere Erklärung dazu geben, wie man jede Art von Weiterleitung in Nginx implementiert, und einige Beispiele für spezifische Anwendungsfälle durchgehen.
Voraussetzungen
Um diesem Tutorial zu folgen, benötigen Sie:
- A server with Nginx installed and set up to serve your website(s). You can find some examples and instructions on the tutorials for Ubuntu 22.04, Debian, or CentOS.
Lösung im Überblick
In Nginx können die meisten Umleitungen mit der integrierten rewrite
-Anweisung durchgeführt werden. Diese Anweisung ist standardmäßig in einer frischen Nginx-Installation verfügbar und kann verwendet werden, um sowohl temporäre als auch permanente Umleitungen zu erstellen. In ihrer einfachsten Form nimmt sie mindestens zwei Argumente entgegen: die alte URL und die neue URL.
Sie können eine temporäre Umleitung mit den folgenden Zeilen in Ihrer Serverkonfiguration implementieren:
Diese Umleitung weist den Browser an, alle Anfragen für www.domain1.com
auf www.domain2.com
umzuleiten. Diese Lösung funktioniert jedoch nur für eine einzelne Seite, nicht für die gesamte Website. Um mehr als eine einzelne Seite umzuleiten, können Sie die rewrite
-Anweisung mit regulären Ausdrücken verwenden, um ganze Verzeichnisse anstelle von einzelnen Dateien anzugeben.
redirect
passt reguläre Ausdrucksmuster in Klammern an. Es referenziert dann den übereinstimmenden Text im Umleitungsziel unter Verwendung des Ausdrucks $1
, wobei 1
die erste Gruppe des übereinstimmenden Textes ist. In komplexeren Beispielen werden darauf folgende übereinstimmende Gruppen sequenziell nummeriert.
Beispielsweise, wenn Sie jede Seite innerhalb von www.domain1.com
vorübergehend auf www.domain2.com
umleiten möchten, könnten Sie Folgendes verwenden:
Standardmäßig richtet die rewrite
-Anweisung eine temporäre Umleitung ein. Wenn Sie eine dauerhafte Umleitung erstellen möchten, können Sie dies tun, indem Sie am Ende der Anweisung redirect
durch permanent
ersetzen, wie folgt:
Lassen Sie uns zu einigen spezifischen Beispielen übergehen.
Beispiel 1 — Umzug auf eine andere Domain
Wenn Sie eine Webpräsenz eingerichtet haben und Ihre Domain auf eine neue Adresse ändern möchten, ist es am besten, Ihre alte Domain nicht einfach aufzugeben. Lesezeichen zu Ihrer Website und Links zu Ihrer Website, die sich auf anderen Seiten im Internet befinden, werden ungültig, wenn Ihre Inhalte ohne Anweisungen an den Browser, wie er den neuen Speicherort finden soll, verschwinden. Das Ändern von Domains ohne Umleitung führt dazu, dass Ihre Website den Verkehr von früheren Besuchern und älteren Links verliert.
In diesem Beispiel konfigurieren wir eine Umleitung von der alten Domain namens domain1.com
auf die neue Domain namens domain2.com
. Wir verwenden hier permanente Umleitungen, da die alte Domain veraltet sein wird und der gesamte Verkehr ab sofort zur neuen Domain geleitet werden soll.
Annehmen, Sie haben Ihre Website bereits so konfiguriert, dass sie von einer einzelnen Domain namens domain1.com
in Nginx wie folgt bedient wird:
Wir gehen auch davon aus, dass Sie Ihre zukünftige Version der Website bereits unter domain2.com
bedienen:
Lassen Sie uns die Serverblock-Konfigurationsdatei von domain1.com
ändern, um eine permanente Weiterleitung zu domain2.com
hinzuzufügen:
Wir haben die oben genannte Weiterleitung mit einer rewrite
-Direktive hinzugefügt. Der reguläre Ausdruck ^/(.*)$
passt zu allem nach dem /
in der URL. Zum Beispiel wird http://domain1.com/index.html
zu http://domain2.com/index.html
umgeleitet. Um die permanente Weiterleitung zu erreichen, fügen wir einfach permanent
nach der rewrite
-Direktive hinzu.
Hinweis: Denken Sie daran, Ihre Konfiguration mit nginx -t
zu testen und dann Nginx neu zu starten, nachdem Sie Ihre Änderungen vorgenommen haben.
Beispiel 2 – Eine beständige Erfahrung trotz Änderungen des Seitennamens
Manchmal ist es notwendig, die Namen einzelner Seiten zu ändern, die bereits veröffentlicht wurden und Traffic auf Ihrer Website erhalten haben. Die alleinige Änderung des Namens würde bei Besuchern, die versuchen, auf die ursprüngliche URL zuzugreifen, einen 404 Not Found-Fehler verursachen, aber Sie können dies durch eine Weiterleitung vermeiden. Dadurch wird sichergestellt, dass Personen, die Ihre alten Seiten als Lesezeichen gespeichert haben oder sie über veraltete Links in Suchmaschinen gefunden haben, trotzdem zur richtigen Seite gelangen.
Angenommen, Ihre Website hatte zwei separate Seiten für Produkte und Dienstleistungen namens produkte.html
und dienstleistungen.html
respectively. Jetzt haben Sie sich entschieden, diese beiden Seiten durch eine einzige Angebotsseite namens angebote.html
zu ersetzen. Wir werden eine einfache Weiterleitung für produkte.html
und dienstleistungen.html
auf angebote.html
konfigurieren.
Wir nehmen an, dass Ihre Website wie folgt konfiguriert ist:
Die Konfiguration der Weiterleitungen ist so einfach wie die Verwendung von zwei Weiterleitungsanweisungen.
Die rewrite
-Anweisung akzeptiert die ursprüngliche Adresse, die umgeleitet werden muss, sowie die Zieladresse einer neuen Seite. Da die Änderung hier nicht vorübergehend ist, haben wir auch permanent
in der Anweisung verwendet. Sie können beliebig viele Weiterleitungen wie diese verwenden, um sicherzustellen, dass Ihre Besucher keine unnötigen 404-Not Found-Fehler sehen, wenn sich Inhalte der Website ändern.
Fazit
Sie haben nun das Wissen, um Anfragen an neue Standorte weiterzuleiten. Stellen Sie sicher, dass Sie den richtigen Weiterleitungstyp verwenden, da eine falsche Verwendung von temporären Weiterleitungen Ihr Suchranking beeinträchtigen kann.
Es gibt mehrere andere Verwendungen von HTTP-Weiterleitungen, darunter das Erzwingen sicherer SSL-Verbindungen (d. h. die Verwendung von https
anstelle von http
) und das Sicherstellen, dass alle Besucher nur auf die mit www.
versehene Adresse der Website gelangen.
Die richtige Verwendung von Weiterleitungen ermöglicht es Ihnen, Ihre aktuelle Webpräsenz zu nutzen und gleichzeitig die Möglichkeit zu haben, Ihre Website-Struktur bei Bedarf anzupassen. Wenn Sie mehr über die Möglichkeiten erfahren möchten, wie Sie Ihre Besucher umleiten können, bietet Nginx eine großartige Dokumentation zu diesem Thema in den Umschreibmodul-Abschnitten der offiziellen Dokumentation und im offiziellen Blogbeitrag zur Erstellung von Weiterleitungen.