2017-08-06 1 views
0

Cette question a été posée et j'ai naviguerez sur les questions des suggestions avant de poser moi-même. Malheureusement, je n'ai pas trouvé la réponse dont j'ai besoin.Web.config Redirect HTTP à HTTPS, à l'exclusion des sous-domaines

J'ai rewrite dans mon fichier web.config pour rediriger un domaine TLD de HTTP vers HTTPS. Le problème que j'ai est qu'il redirige également les sites de sous-domaine. Je veux seulement que le TLD redirige et non les sites de sous-domaine.

Par exemple, j'ai www.example1.co.za et www.example2.com

Je requiers http://www.example2.com rediriger vers https://www.example2.com, mais pas http://a.example2.com ou un sous-domaine de www.example2.com

Il doit également garder la règle de redirection pour http://example1.co.za rediriger vers https://example1.co.za

Voici mon code de configuration:

<rules> 
    <clear /> 
    <rule name="Redirect to SSL for Mass" stopProcessing="true"> 
     <match url="(.*)" ignoreCase="true"/> 
     <conditions logicalGrouping="MatchAll"> 
      <add input="{HTTP_HOST}" pattern="example1\.co\.za$" /> 
      <add input="{HTTPS}" pattern="^OFF$" /> 
     </conditions> 
     <action type="Redirect" url="https://example1.co.za" /> 
    </rule> 
    <rule name="Redirect to SSL for Pro" stopProcessing="true"> 
     <match url="(.*)" ignoreCase="true"/> 
     <conditions logicalGrouping="MatchAll"> 
      <add input="{HTTP_HOST}" pattern="example2\.com$" /> 
      <add input="{HTTPS}" pattern="^OFF$" /> 
     </conditions>       
     <action type="Redirect" url="https://example2.com" /> 
    </rule> 
</rules> 

EDIT

J'ai essayé d'ajouter une autre règle pour exclure des sous-domaines. mais je reçois en erreur :(

<rule name="Exclude Sub Sites from Pro HTTPS Rule" stopProcessing="true"> 
        <match url="(.*)" ignoreCase="true"/> 
        <conditions logicalGrouping="MatchAll"> 
         <add input="{HTTP_HOST}" pattern="^*\.example2\.com$" negate="true" /> 
         <add input="{HTTPS}" pattern="^OFF$" /> 
        </conditions> 
       </rule> 

Répondre

2

Cette règle redirigera:

http://www.example.com rediriger vers https://www.example.com,

http://example.com rediriger vers https://example.com

<rule name="Check SSL" stopProcessing="true"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAll"> 
     <add input="{HTTP_HOST}" pattern="^(www\.)?example\.com$" /> 
     <add input="{HTTPS}" pattern="^OFF$" /> 
    </conditions>       
    <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" /> 
</rule> 

Ce regexp ^(www\.)?example\.com$ est le filtrage demandes, qui ont hôte différent de example.com ou www.example.com

+0

ce que ce sous-domaines exclure? donc il ne redirigera pas pour sub.example.com? juste besoin de confirmer avant de tester cela sur les sites Live. – Orion

+0

Oui, tous les domaines seront exclus sauf: example.com ou www.example.com –

+0

J'ai 2 règles pour 2 domaines de premier niveau. Va-t-il également exclure cet autre domaine? S'il vous plaît voir la question éditée. – Orion