J'utilise la réponse donnée ici comme base pour essayer d'ajouter une règle de réécriture à mon fichier web.config. Je veux qu'il corresponde à toute URL qui ne fonctionne pas sur localhost afin de forcer https.
Voici ce que j'ai en ce moment:
<system.webServer>
<rewrite> <!-- force https - https://stackoverflow.com/a/15119044/51 -->
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^((?!localhost).)*$"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>
J'essaie d'utiliser un lookaround négatif afin de ne faire correspondre que les URL qui n'incluent pas "localhost" dans l'url. Mais ça ne fonctionne pas.
Alors, comment cette règle doit-elle être configurée afin de ne réécrire que les URL non locales?
Essayez cette condition:
<system.webServer>
<rewrite>
<rules>
<rule name="Redirect HTTP to HTTPS" stopProcessing="true">
<match url="^(.*)$"/>
<conditions>
<add input="{HTTPS}" pattern="^OFF$"/>
<add input="{HTTP_Host}" matchType="Pattern" pattern="^localhost$" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="SeeOther"/>
</rule>
</rules>
</rewrite>
</system.webServer>
L'utilisation d'une condition negate
contre le modèle localhost
devrait faire l'affaire.
En ajoutant à anubhava réponse , vous pouvez remplacer l'élément add pour localhost par les 2 entrées suivantes pour répondre à la fois à localhost et 127.0.0.1 avec des ports facultatifs, par exemple localhost: 59400, ce qui est le cas lors du débogage via Visual Studio. et IIS
<add input="{HTTP_Host}" matchType="Pattern" pattern="^localhost(:\d+)?$" negate="true" />
<add input="{HTTP_Host}" matchType="Pattern" pattern="^127\.0\.0\.1(:\d+)?$" negate="true" />
Avec la réponse d'origine, localhost: 123 serait redirigé vers https, ce qui n'est peut-être pas souhaitable.