Post 794
Exchange,  Windows

IIS URL Rewrite: HTTP zu HTTPS weiterleiten

Der Microsoft Internet Information Server (IIS) bietet von Haus aus keine einfache Möglichkeit, HTTP-Anfragen automatisch auf HTTPS weiterzuleiten. Das URL Rewrite-Modul schließt diese Lücke und ermöglicht flexible Weiterleitungsregeln – ähnlich wie mod_rewrite bei Apache.

URL Rewrite Modul installieren

Das URL Rewrite-Modul ist kein Bestandteil der IIS-Standardinstallation und muss separat heruntergeladen werden. Microsoft stellt es kostenlos bereit:

64-Bit: rewrite_amd64_en-US.msi von der Microsoft IIS-Downloadseite
32-Bit: rewrite_x86_en-US.msi für 32-Bit-Systeme

Nach der Installation erscheint URL Rewrite im IIS-Manager als neues Feature-Icon. Der IIS-Dienst muss nach der Installation nicht neu gestartet werden.

web.config für HTTP-zu-HTTPS-Weiterleitung

Die Rewrite-Regeln werden in der web.config-Datei definiert, die im Stammverzeichnis der Website liegt (C:inetpubwwwrootweb.config). Wenn noch keine web.config existiert, legt man sie neu an:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{HTTPS}" pattern="^OFF$" />
                    </conditions>
                    <action type="Redirect"
                            url="https://{HTTP_HOST}/{R:1}"
                            redirectType="Permanent" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Diese Konfiguration leitet alle HTTP-Anfragen mit einem permanenten 301-Redirect auf die entsprechende HTTPS-URL weiter. Der {HTTP_HOST}-Platzhalter übernimmt den originalen Hostnamen, {R:1} den vollständigen Pfad nach dem Slash.

Erweiterte Konfiguration: Bestimmte Pfade ausschließen

In manchen Szenarien möchte man bestimmte Pfade von der Weiterleitung ausschließen – z. B. einen Let’s-Encrypt-Challenge-Pfad:

<rule name="HTTP to HTTPS Redirect" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTPS}" pattern="^OFF$" />
        <add input="{URL}" pattern="^/.well-known/" negate="true" />
    </conditions>
    <action type="Redirect"
            url="https://{HTTP_HOST}/{R:1}"
            redirectType="Permanent" />
</rule>

HSTS-Header hinzufügen

Nach der Einrichtung des Redirects empfiehlt sich zusätzlich der HSTS-Header (HTTP Strict Transport Security), der Browsern mitteilt, die Website künftig immer direkt über HTTPS anzusprechen:

<system.webServer>
    <httpProtocol>
        <customHeaders>
            <add name="Strict-Transport-Security"
                 value="max-age=31536000; includeSubDomains; preload" />
        </customHeaders>
    </httpProtocol>
</system.webServer>

Konfiguration über den IIS-Manager (GUI)

Alternativ zur manuellen web.config-Bearbeitung kann man die Regel über den IIS-Manager anlegen: Website auswählen → URL Rewrite doppelklicken → „Regel hinzufügen“ → „Leere Regel“. Die grafische Oberfläche generiert automatisch den web.config-Eintrag. Für Administratoren, die selten mit Rewrite-Regeln arbeiten, ist das die übersichtlichere Option.

Fazit

Das IIS URL Rewrite-Modul ist ein unverzichtbares Werkzeug für jeden IIS-Administrator. Die HTTP-zu-HTTPS-Weiterleitung ist in wenigen Minuten eingerichtet und verbessert sowohl Sicherheit als auch SEO der Website. In Kombination mit HSTS ist die Website dauerhaft gegen unverschlüsselte Verbindungen abgesichert.