IIS-Umleitung von http auf https

Voraussetzung:

es wurde ein Zertifikat erstellt und im IIS für https-Verbindung eingerichtet

es wurde das URL Rewrite-Modul von Microsoft auf dem Server installiert, der die betroffenen Webseiten über den IIS hostet

 

IIS-Manager starten und links die betroffene Webseite markieren (diese heißt üblicherweise Default Web Site), dann ist im Hauptfenster das Objekt URL Rewrite zu finden

Ein Doppelklick auf das Symbol startet das entsprechende Modul

auf der rechten Seite in der Aktionsleise auf Regel(n) hinzufügen klicken

im neu geöffneten Fenster wird eine Leere Regel für Eingehende Regeln ausgewählt

das Fenster zum bearbeiten der neuen Regel ist in mehrere Abschnitte aufgeteilt:

  • Name
  • Abschnitt Übereinstimmung mit URL:
    • Angeforderte URL: Entspricht dem Muster
    • Unter Verwendung von: Reguläre Ausdrücke
    • Muster: (.*)
    • Groß-/Kleinschreibung ignorieren muss aktiviert werden
  • Abschnitt Bedingungen:
    • Dropdown-Menü Logische Gruppierung: Übereinstimmung mit allen Elementen
    • Dann rechts auf Hinzufügen:
      • Bedingungseingabe: {HTTPS}
      • Dropdown-Menü: Entspricht dem Muster
      • Muster: ^OFF$
      • Groß-/Kleinschreibung ignorieren muss aktiviert werden
    • Abschnitt Servervariablen:
      • Kein Eintrag notwendig
    • Abschnitt Aktionen:
      • Aktionstyp: Umleiten
      • URL umleiten: https://{HTTP_HOST}{REQUEST_URI}
      • Abfragezeichenfolge anhängen muss deaktiviert werden
      • Umleitungstyp: Dauerhaft (301)

auf der rechten Seite in der Aktionsleise Übernehmen klicken

den IIS z.B. per Powershell oder cmd (jeweils als Administrator ausführen) mit dem Befehl iisreset neu starten

Im Root-Verzeichnis der Webseite (normalerweise unter C:\inetpub\wwwroot) sollte eine Datei web.config zu finden sein, die entweder neu angelegt oder bearbeitet wurde. Die Datei sollte folgenden Abschnitt enthalten:

web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="https redirect" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions>
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Der dargestellte Codeblock allein reicht nicht aus, um die Umleitung zu setzen. Das würde beim Aufruf einer Webseite zu einem Fehler 500 führen. Voraussetzung für die fehlerfreie Umleitung ist das installierte URL Rewrite-Modul.