it-swarm.com.de

RewriteCond% {HTTPS}! = On funktioniert nicht, obwohl RewriteCond% {SERVER_PORT}! ^ 443 $ funktioniert

Ich muss in htaccess nach Nicht-HTTPS-URLs suchen.

Meines Wissens nach stimmt RewriteCond %{HTTPS} !=on mit allen URLs überein, die nicht HTTPS sind. Aber beim Testen finde ich RewriteCond %{HTTPS} !=onstimmt überein sowohl HTTP als auch HTTPS URLs.

Allerdings stimmt RewriteCond %{SERVER_PORT} !^443$ nicht mit HTTPS-URLs überein? Vermisse ich etwas zum Verständnis von % {HTTPS}! = On?

1
Kannan

Meines Wissens nach stimmt RewriteCond %{HTTPS} !=on mit allen URLs überein, die nicht HTTPS sind.

Ja, das ist richtig. In diesem Zusammenhang ist HTTPS eine Servervariable , die von Apache basierend auf der Anforderung festgelegt wird, die Ihren Server erreicht.

Aber beim Testen finde ich RewriteCond %{HTTPS} !=onstimmt überein sowohl HTTP als auch HTTPS URLs.

Dies ist nicht möglich, wenn das SSL-Zertifikat direkt auf Ihrem Anwendungsserver installiert ist. Wenn Sie jedoch einen SSL-Proxy verwenden, bei dem SSL von einem Front-End-Proxy verarbeitet wird und die Verbindung vom SSL-Proxy zu Ihrem Anwendungsserver normales HTTP ist (dies ist bei der kostenlosen flexiblen SSL-Option von Cloudflare der Fall) Dies wird in der Tat als der Fall erscheinen , da Ihr Server nur Datenverkehr über HTTP bereitstellt.

Allerdings stimmt RewriteCond %{SERVER_PORT} !^443$ nicht mit HTTPS-URLs überein?

Dies widerspricht jedoch dem oben Gesagten! Wenn dies funktioniert, sollte auch die Prüfung gegen HTTPS erfolgen. Dies scheint darauf hinzudeuten, dass Sie oben möglicherweise eine zwischengespeicherte Antwort sehen.

1
MrWhite