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