2015-03-31 1 views
2

Mon objectif est d'avoir des règles dans le fichier web.config d'IIS/Azure pour rediriger avec succès les exemples de demande client suivants:Règle (s) simple (s) pour le fichier IIS/Azure web.config pour rediriger le trafic vers un autre site www. HTTPS

HTTPS redirect:

No-www & HTTPS redirect:

No-www, HTTPS rediriger & chemin maintenir:

Voici ce que j'ai jusqu'à présent, ce qui n'atteint le point 1 et 2. Si un visiteur arrive directement sur une sous-page, ils ne sont pas redirigés vers non www et ne sont pas redirigés vers HTTPS.

<rule name="Redirect to https"> 
     <match url="(.*)"/> 
     <conditions> 
     <add input="{HTTPS}" pattern="Off"/> 
     <add input="{REQUEST_METHOD}" pattern="^get$|^head$" /> 
     </conditions> 
     <action type="Redirect" url="https://{HTTP_HOST}/{R:1}"/> 
    </rule> 
    <rule name="Canonical Hostname" stopProcessing="false"> 
     <match url="(.*)" /> 
     <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" /> 
     </conditions> 
     <action type="Redirect" url="https://{C:2}{REQUEST_URI}" redirectType="Permanent" /> 
    </rule> 

J'ai épuisé plusieurs pages de résultats de recherche et de multiples questions StackOverflow sans chance - ils ont tous promettent d'être en mesure d'atteindre le troisième point (rediriger vers un non-www, HTTPS Page et maintenir le chemin) mais ils n'ont pas travaillé pour moi.

Merci d'avoir pris le temps de lire ceci!

Répondre

2

J'ai découvert le problème, qui est en partie dû à la façon dont j'ai présenté ma question (désolé, StackOverflowers!).

Le problème était l'ordre des règles. J'ai placé les (nouvelles) règles suivantes en haut de la section des règles, dans l'ordre suivant, pour ceux qui souffrent de ce problème à l'avenir. Maintenant, il redirige vers HTTPS, avec no-www, et maintient le chemin demandé par le client.

<rule name="Canonical Hostname" stopProcessing="false"> 
    <match url="(.*)" /> 
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false"> 
     <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" /> 
    </conditions> 
    <action type="Redirect" url="http://{C:2}{REQUEST_URI}" redirectType="Permanent" /> 
    </rule> 
    <rule name="Force HTTPS" enabled="true"> 
    <match url="(.*)" ignoreCase="false" /> 
    <conditions> 
     <add input="{HTTPS}" pattern="off" /> 
    </conditions> 
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> 
    </rule>