Was sind »Umleitungen« ?

    Eine Umleitung (englisch, redirects) ist eine Methode, um den Client-Browser auf eine andere URL weiterzuleiten. Das kann notwendig werden, um z.B. veraltete URLs auf eine aktuellere Version weiterzuleiten, oder um den Datenverkehr auf eine bestimmte Domain zu leiten.

    Permanent Vs. Temporary

    Die beiden gängigsten Arten von Weiterleitungen sind die permanente Weiterleitung mit dem HTTP-Statuscode 301 und die temporäre Weiterleitung mit dem HTTP-Statuscode 302.

    Weitere HTTP-Statuscodes für »Umleitungen«

    Der gesamte Bereich der HTTP-Statuscodes von 3xx ist für Umleitungen reserviert. Also jeder Statuscode, der mit einer 3 beginnt, zegit an das die angeforderte Ressource unter einer anderen URL zu finden ist.

    1. Multiple Choices (Mehrere Auswahlmöglichkeiten)
      Der Server kann mehrere Optionen für die angeforderte Ressource liefern.
    2. Moved Permanently (Dauerhaft verschoben)
      Die angeforderte Ressource wurde dauerhaft an eine neue URL verschoben.
    3. Found (Gefunden)
      Die angeforderte Ressource wurde vorübergehend an eine andere URL verschoben.
    4. See Other (Siehe Andere)
      Die angeforderte Ressource kann unter einer anderen URL gefunden werden.
    5. Not Modified (Nicht modifiziert)
      Die angeforderte Ressource hat sich seit der letzten Anfrage des Clients nicht geändert.
    6. Use Proxy (Proxy verwenden)
      DDie angeforderte Ressource muss über einen Proxy abgerufen werden, der in der “Location”-Header angegeben ist. Dieser Statuscode ist veraltet.
    7. Not Used / Nicht in Benutzung
    8. Temporary Redirect (Temporäre Umleitung)
      Die angeforderte Ressource wurde vorübergehend an eine andere URL verschoben.
    9. Permanent Redirect (Dauerhaft umgeleitet)
      Die angeforderte Ressource wurde dauerhaft an eine neue URL verschoben.

    Umleitung von www zu non-www in Nginx

    Das Umleiten von ‘www.‘ zu non ‘www.‘ (oder umgekehrt) ist eine gängige Methode, um sicherzustellen, dass Besucher auf Ihre Website nicht auf unterschiedliche Versionen derselben Seite stoßen, die möglicherweise unterschiedliche Inhalte enthalten und die Besucher der Seite eine einheitliche URL-Struktur sehen. Wenn Sie beispielsweise die Domain www.example.com besitzen und diese auf example.com umleiten möchten, können Sie dies in Nginx wie folgt tun:

    1. Öffnen Sie die Konfigurationsdatei von Nginx. Diese befindet sich normalerweise im Verzeichnis /etc/nginx/.
    2. Fügen Sie den folgenden Serverblock für www.example.com hinzu:
    server {
       listen 80;
       server_name www.example.com;
       return 301 $scheme://example.com$request_uri;
    }
    • return 301 ist eine Nginx-Direktive mit der eine permanente Umleitung (HTTP-Statuscode 301) generiert wird.
    • $scheme wird automatisch durch Nginx ersetzt, um das aktuelle Protokoll (http oder https) zu verwenden.
    • $request_uri wird verwendet, um alle URI-Parameter beizubehalten.
    1. Speichern Sie die Änderungen, Syntax-Prüfung (nginx -t) und neu laden (service nginx reload), bei erfolgreicher Prüfung, um die Änderungen anzuwenden:

    nginx -t && service nginx reload

    Test

    Um zu prüfen, ob die Konfiguration greift, gibt es mehrere Möglichkeiten:

    • Nginx-Logs: Nachdem Sie die Konfiguration gespeichert haben und den Nginx-Service neu geladen haben, können Sie die Nginx-Logs überprüfen, normalerweise in der Datei access.log, wenn Sie die Umleitung korrekt konfiguriert haben, sollten Sie eine Zeile sehen, die den HTTP-Statuscode 301 enthält.
    • Umleitung manuell testen: Sie können feststellen ob die Umleitung korrekt funktioniert, indem Sie die URL in Ihrem Browser aufrufen und sehen, ob Sie automatisch zur neuen URL weitergeleitet werden. Sie sollten allerdings den Browser-Cache vor dem Testen der Umleitung löschen, um sicherzustellen, dass Sie die tatsächliche Umleitung testen und nicht eine zwischengespeicherte Version der Seite.
    • cURL: Der Befehl curl -I gibt den HTTP-Header zurück, um zu überprüfen, ob die Umleitung erfolgreich durchgeführt wurde, um www.example.com zu testen können Sie den folgenden Befehl verwenden:
      curl -I www.example.com

      Die Ausgabe sollte einen HTTP-Statuscode von 301 und die neue URL (Location) enthalten:

      
      HTTP/1.1 301 Moved Permanently
      Server: nginx/1.18.0 (Ubuntu)
      Date: Tue, 15 Feb 2023 10:30:00 GMT
      Content-Type: text/html
      Content-Length: 178
      Connection: keep-alive
      Location: http://example.com/
      

    Links