Zum Inhalt

HTTPS-Redirect verifizieren mit curl und Invoke-WebRequest

Wenn du HTTP auf HTTPS weiterleitest, musst du das auch nachweisen können – nicht nur im Browser klicken. Der Browser folgt Redirects automatisch und zeigt dir nicht was wirklich passiert. Mit curl und Invoke-WebRequest siehst du die rohen HTTP-Antworten.


Was erwartest du bei einer korrekten Weiterleitung?

Eine HTTP→HTTPS Weiterleitung sollte: 1. Auf eine HTTP-Anfrage mit dem Statuscode 301 Moved Permanently antworten 2. Im Location-Header die HTTPS-URL zurückgeben


curl (Linux / Mac / WSL)

Nur Header anzeigen (ohne Redirect zu folgen)

curl -I http://deine-domain.ch

Erwartete Ausgabe:

HTTP/1.1 301 Moved Permanently
Location: https://deine-domain.ch/

Redirect verfolgen und alle Schritte anzeigen

curl -Lv http://deine-domain.ch 2>&1 | grep -E "< HTTP|Location"
  • -L → folgt Redirects
  • -v → verbose, zeigt alle Headers
  • Das grep filtert die relevanten Zeilen heraus

Nur den Statuscode ausgeben

curl -o /dev/null -s -w "%{http_code}\n" http://deine-domain.ch

Bei einer korrekten Weiterleitung: 301


Invoke-WebRequest (Windows PowerShell)

PowerShell folgt Redirects standardmässig automatisch. Um den Redirect selbst zu sehen, musst du das deaktivieren:

Redirect sichtbar machen

Invoke-WebRequest -Uri "http://deine-domain.ch" -MaximumRedirection 0 -ErrorAction SilentlyContinue

Erwartete Ausgabe:

StatusCode        : 301
StatusDescription : Moved Permanently
Headers           : {[Location, https://deine-domain.ch/], ...}

Nur Statuscode und Location ausgeben

$response = Invoke-WebRequest -Uri "http://deine-domain.ch" -MaximumRedirection 0 -ErrorAction SilentlyContinue
$response.StatusCode
$response.Headers["Location"]

Häufige Fehler

Problem Mögliche Ursache
Statuscode 200 statt 301 Redirect ist nicht konfiguriert
Statuscode 301, aber Location zeigt noch auf HTTP Falsche URL in der Apache-Konfiguration
Verbindung schlägt fehl Port 80 ist in der AWS Security Group nicht offen
Redirect funktioniert im Browser aber nicht mit curl Browser-Cache – curl ist ehrlicher

In der Dokumentation

Halte folgende Punkte in deiner Dokumentation fest: 1. Den verwendeten Befehl (curl oder Invoke-WebRequest) 2. Die vollständige Ausgabe (Screenshot oder Codeblock) 3. Eine kurze Erklärung: Was bedeutet der Statuscode 301? Was steht im Location-Header?