lostinspaze
Goto Top

IIS redirect von http auf https für alle Seiten ausser einer bestimmten

Hallo zusammen,

ich bin leider "neu" in dem Thema IIS Webserver und verzweifel gerade an einer Anforderung.

Wir haben eine Site im IIS - mit 5 unterschiedlichen Bindings.
Beispiel

abc.test.de
abc.prod.de
abc.dev.de
abc.rel.de
abc.go.de

alle sollen von http auf https umgeleitet werden ( redirect permanent ) AUSSER die "abc.go.de/work/"
Die muss http bleiben.

Ich habe nun schon viel mit den Regeln probiert und gelesen - aber ich bekomme es einfach nicht hin.
Entweder too many redirects oder alle gehen auf https..

Ich verzweifel

Content-ID: 51356075187

Url: https://administrator.de/forum/iis-redirect-von-http-auf-https-fuer-alle-seiten-ausser-einer-bestimmten-51356075187.html

Ausgedruckt am: 10.04.2025 um 21:04 Uhr

user217
user217 18.06.2024 um 11:42:03 Uhr
Goto Top
Servus,
eigentlich musst du im iis nur die bindings konfigurieren (auf was er extern reagieren soll) und entsprechend das Virtuelle Verzeichnis hinzufügen für das mapping von Webserverpfad auf physikalischen Pfad. Das wars eigentlich.
http(s) konfiguriert man in den bindings.
13034433319
13034433319 18.06.2024 aktualisiert um 12:09:14 Uhr
Goto Top
Nach dem Schema: Protocol = http && http_host != "abc.go.de" erreichst du dein Ziel...

Gruß
LostinSpaze
LostinSpaze 19.06.2024 um 09:30:02 Uhr
Goto Top
Naja,
ich habe auf der Site 4 Bindings mit https / Hostname und eine für alle * mit http

Dazu hatte ich eine URL Rewrite erstellt, damit alle Hostnamen / FQDN bis auf die eine auf https geroutet werden
Das klappt aber nicht..

entweder habe ich too many redirects.. oder alle Seiten werden zu https redirected... oder alle Seiten gehen http und https
13034433319
13034433319 19.06.2024 aktualisiert um 10:41:34 Uhr
Goto Top
Also mal wieder zu Fuß ...

In allen Sites außer bei der Ausnahme Domain folgende eingehende Regel hinzufügen:

screenshot

(FQDN sollte natürlich in der Bindungen aller Sites hinterlegt sein!)

screenshot

Feddisch. Funktioniert hier im Test mit 3 Testdomains einwandfrei, eine davon wurde ausgenommen( dort extistert einfach keine Regel) und dort kann ich weiterhin per http nutzen => Ergo: Works as designed.
LostinSpaze
LostinSpaze 19.06.2024 aktualisiert um 15:35:39 Uhr
Goto Top
Hallo hempel,
Zu der Situation:
abc.test.de
abc.prod.de
abc.dev.de
abc.rel.de
abc.go.de

Sind alles Host Names auf EINER site

alle sollen von http auf https umgeleitet werden ( redirect permanent )
( die Regel, die du da hast, hatte ich auch), aber
die "abc.go.de/work/" die muss http bleiben.

das wäre nicht möglich, oder ?
also abc.go.work = https
abc.go.work/work/ = http ?
13034433319
13034433319 19.06.2024 aktualisiert um 15:38:57 Uhr
Goto Top
as wäre nicht möglich, oder ?
Doch, einfach nur ganz oben bei Mustervergleich den Pfad hinterlegen und auf "Entspricht nicht dem Muster" wählen, oder den Pfad als Bedingung hinzufügen (negiert).
LostinSpaze
LostinSpaze 19.06.2024 um 15:38:58 Uhr
Goto Top
mmmhh ok
ich bin einfach zu doof dafür glaube ich...

PS: habe normalerweise damit auch nix zu tun, da ich VMware und Netzwerke mache,
aber Kollege Urlaub und wichtig..
13034433319
13034433319 19.06.2024 aktualisiert um 16:07:02 Uhr
Goto Top
LostinSpaze
LostinSpaze 19.06.2024 um 17:10:59 Uhr
Goto Top
Hallo hempel

die Einstellungen:

iis-1

Auf der Site die Bindings - betrifft die markierten

iis-2

bleibt aber beharrlich auf https

iis-3
13034433319
13034433319 19.06.2024 aktualisiert um 17:41:59 Uhr
Goto Top
Ist ja auch klar, du hast alle Domains auf die selbe Site gebunden ich war davon ausgegangen das jede Domain auf einer eigenen Site landet!
Ist aber kein Problem du musst dann noch eine Domain-Bedingung hinzufügen für deine Domain.

Und beim Testen musst du zwingend den private Mode benutzen und nach jeder Änderung am Server die Session beenden weil sich Browser die Redirects für die Session merken!

Mach dir später das Beispiel fertig falls du es noch nicht verstanden hast, muss jetzt weg. edit, siehe nächstes Kommentar...
13034433319
Lösung 13034433319 19.06.2024 aktualisiert um 17:56:12 Uhr
Goto Top
So hier die Lösung wenn alle Domains auf eine einzige Site gebunden sind :

screenshot

  • Die erste Regel matcht den {HTTP_HOST} auf die spezifische Domain abc.go.work und bei Verwenden des Pfades /work/ und beendet die Verarbeitung der Regeln "Aktion: Keine" und Haken bei "Verarbeitung von nachfolgenden Regeln beenden" setzen , die nächste Regel wird also danach nicht mehr angewendet.
  • Die zweite Regel greift dann für den sämtlichen Rest und leitet auf https um.

Als web.config im Klartext sieht das so aus

<?xml version="1.0" encoding="UTF-8"?>  
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="No https redirect for specific path" stopProcessing="true">  
                    <match url="^work(/.*)?$" />  
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">  
                        <add input="{HTTP_HOST}" matchType="Pattern" pattern="^abc\.go\.work$" ignoreCase="true" negate="false" />  
                    </conditions>
                    <action type="None" />  
                </rule>
                <rule name="Rewrite rest to https" stopProcessing="true">  
                    <match url=".*" negate="false" />  
                    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">  
                        <add input="{HTTPS}" pattern="^OFF$" />  
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />  
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Wurde hier getestet und funktioniert problemlos.

Man kann das zwar auch in eine einzige Regel pressen aber so ist es für andere die es evt. wieder anpassen müssen verständlicher wenn es in zwei Regeln gegliedert ist.
LostinSpaze
LostinSpaze 26.06.2024 um 08:20:00 Uhr
Goto Top
Danke schön