web-dev-qa-db-fra.com

URL Réécrire http en https EXCEPT fichiers dans un sous-dossier spécifique

J'essaie de forcer tout le trafic de mon site Web à utiliser HTTPS, à l'aide du module URL Rewrite 2.0 ajouté à IIS 7.5. Cela fonctionne et j'ai maintenant besoin d'exclure quelques pages de l'utilisation de SSL. J'ai donc besoin d'une règle pour réécrire toutes les URL, à l'exception de celles référençant ce dossier en HTTPS. Je me suis cogné la tête contre le mur et espère que quelqu'un pourra vous aider. J'ai essayé de créer une règle pour qu'elle corresponde à toutes les URL, à l'exception de celles d'un sous-dossier nossl, comme dans cet exemple:

<rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
  <match url="(/nossl/.*)" negate="true" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="off" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>

Mais ça ne marche pas. Quelqu'un peut-il aider?

6
BrettRobi

Si quelqu'un est curieux, j'ai résolu ce problème avec la syntaxe suivante:

<rule name="NoSSL - folder" enabled="true" stopProcessing="true">
   <match url="^nossl/.*" />
   <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
   </conditions>
   <action type="None" />
</rule>
<rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>
9
BrettRobi

Bien que je sois un peu en retard à la fête, je voudrais suggérer cette syntaxe, qui est un peu plus courte (et plus propre), à ​​celle acceptée:

<rule name="Redirect to HTTPS except /nossl/ folder" enabled="true" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
        <add input="{REWRITE_URI}" url="^nossl/.*" negate="true" />
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_Host}/{R:1}" redirectType="Found" />
</rule>
2
Darkseal