web-dev-qa-db-fra.com

Meilleur moyen de rediriger tous les HTTP vers HTTPS dans IIS

Nous voulons que TOUS les sites de notre serveur Web (IIS 10) appliquent SSL (c.-à-d. Redirigent HTTP vers HTTPS).

Nous "demandons actuellement SSL" sur chaque site et mettons en place un 403 error gestionnaire pour effectuer un 302 redirect à l'adresse https de ce site spécifique.

Cela fonctionne très bien. Mais c'est difficile à faire pour chaque site, il y a beaucoup de place pour l'erreur humaine.

Idéalement, j'aimerais mettre en place un 301 redirect en tout HTTP://* à HTTPS://*

Existe-t-il un moyen simple de le faire dans IIS?

34
userSteve

Le IIS Module de réécriture d'URL 2.1 pour IIS7 + peut être votre ami. Le module peut être téléchargé à partir de Réécriture d'URL IIS . tilisation du module de réécriture d'URL = et RL Rewrite Module 2.0 Configuration Reference expliquer comment utiliser le module.

Une fois le module installé, vous pouvez créer une redirection à l'échelle de l'hôte à l'aide de IIS Manager. Sélectionnez URL Rewrite, Ajouter des règles .. . et Règle vierge.

Nom:
Rediriger vers HTTPS

URL de correspondance
URL demandée:Matches the Pattern
Utilisation de:Wildcards
Motif:*
Ignorer la casse: Vérifié

Conditions
Regroupement logique:Match Any
Saisie de condition: {HTTPS}
Vérifiez si la chaîne de saisie:Matches the Pattern
Motif:OFF
Ignorer la casse: Vérifié
Suivi des groupes de capture dans toutes les conditions: Non vérifié

Variables serveur
Laisser vide.

Action
Type d'action:Redirect
URL de redirection:https://{HTTP_Host}{REQUEST_URI}
Ajouter une chaîne de requête: Non vérifié
Type de redirection:Permanent (301)

Appliquez la règle et exécutez IISReset (ou cliquez sur Redémarrer dans le gestionnaire IIS)

Alternativement, après avoir installé le module, vous pouvez modifier le fichier applicationHost.config comme suit:

<system.webServer>
  <rewrite>
    <globalRules>
      <rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
        <match url="*" ignoreCase="true" negate="false" />
        <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
          <add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
        </conditions>
        <action type="Redirect" url="https://{HTTP_Host}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
      </rule>
    </globalRules>
  </rewrite>
</system.webServer>
51
sippybear

Ma recherche montre que cela pourrait être un meilleur moyen de rediriger:

<rewrite>
    <rules>
        <rule name="http to https" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_Host}/{R:1}" />
        </rule>
    </rules>
</rewrite>
1
Fallen Angel