Wie man temporäre und permanente Weiterleitungen mit Nginx erstellt

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:

Temporary redirect with rewrite
server {
    . . .
    server_name www.domain1.com;
    rewrite ^/$ http://www.domain2.com redirect;
    . . .
}

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:

Temporary redirect with rewrite
server {
    . . .
    server_name www.domain1.com;
    rewrite ^/(.*)$ http://www.domain2.com/$1 redirect;
    . . .
}

server {
    . . .
    server_name www.domain2.com;
    . . .
}

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:

Permanent redirects
rewrite ^/$ http://www.domain2.com permanent;
rewrite ^/(.*)$ http://www.domain2.com/$1 permanent;

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:

/etc/nginx/sites-available/domain1.com
server {
    . . .
    server_name domain1.com;
    . . .
}

Wir gehen auch davon aus, dass Sie Ihre zukünftige Version der Website bereits unter domain2.com bedienen:

/etc/nginx/sites-available/domain2.com
server {
    . . .
    server_name domain2.com;
    . . .
}

Lassen Sie uns die Serverblock-Konfigurationsdatei von domain1.com ändern, um eine permanente Weiterleitung zu domain2.com hinzuzufügen:

/etc/nginx/sites-available/domain1.com
server {
    . . .
    server_name domain1.com;
    rewrite ^/(.*)$ http://domain2.com/$1 permanent;
    . . .
}

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:

Original server block configuration
server {
    . . .
    server_name example.com www.example.com;
    . . .
}

Die Konfiguration der Weiterleitungen ist so einfach wie die Verwendung von zwei Weiterleitungsanweisungen.

Redirects added to the original configuration
server {
    . . .
    server_name example.com www.example.com;
    
    rewrite ^/products.html$ /offer.html permanent;
    rewrite ^/services.html$ /offer.html permanent;
    . . .
}

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.

Source:
https://www.digitalocean.com/community/tutorials/how-to-create-temporary-and-permanent-redirects-with-nginx