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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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
12 Kommentare
Neuester Kommentar

Nach dem Schema: Protocol = http && http_host != "abc.go.de" erreichst du dein Ziel...
Gruß
Gruß

Also mal wieder zu Fuß ...
In allen Sites außer bei der Ausnahme Domain folgende eingehende Regel hinzufügen:
(FQDN sollte natürlich in der Bindungen aller Sites hinterlegt sein!)
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.
In allen Sites außer bei der Ausnahme Domain folgende eingehende Regel hinzufügen:
(FQDN sollte natürlich in der Bindungen aller Sites hinterlegt sein!)
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.

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).

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...
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...

So hier die Lösung wenn alle Domains auf eine einzige Site gebunden sind :
Als web.config im Klartext sieht das so aus
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.
- 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.