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)¶
Erwartete Ausgabe:
Redirect verfolgen und alle Schritte anzeigen¶
-L→ folgt Redirects-v→ verbose, zeigt alle Headers- Das
grepfiltert die relevanten Zeilen heraus
Nur den Statuscode ausgeben¶
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¶
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?