IIS reescreve de http para https apenas para subdomínios de apenas um domínio

5

Eu tenho um servidor web IIS7 com vários sites em execução. Alguns dos sites são subdomínios de um domínio e os outros são domínios totalmente separados. Desejo usar a regravação do IIS para redirecionar todos os sites de subdomínios de um domínio para https, mas quero que os outros domínios permaneçam como estão. Por exemplo, eu tenho os seguintes sites no mesmo servidor web:

one.test.com, two.test.com, otherdomain.com

E eu quero configurar uma reescrita global do IIS para redirecionar o link e link para https, mas otherdomain.com não deve ser afetado.

Aqui está o que eu tenho até agora, e quando testei o regex, parece correto, mas ele não está redirecionando os sites de subdomínio:

<rewrite>
            <globalRules>
                <rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
                    <match url="(.*)(\.test\.com)" />
                    <conditions logicalGrouping="MatchAny">
                    </conditions>
                    <action type="Redirect" url="https://{R1}{R2}" redirectType="SeeOther" />
                </rule>
            </globalRules>
        </rewrite>
Estou super complicando isso ou faltando algo óbvio?

Felicidades.

    
por Charlotte 14.09.2012 / 11:11

2 respostas

7

Você precisa adicionar condições que correspondam a HTTP_HOST à sua regra (a variável "url" no URL Rewrite não inclui o nome do host).

<globalRules>
    <rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="(.+)\.test\.com" />
        </conditions>
        <action type="Redirect" url="https://{C:0}/{R:0}" />
    </rule>
</globalRules>

Esta regra deve redirecionar todas as solicitações em * .test.com para HTTPS.

    
por 03.11.2012 / 00:32
3

Você precisa adicionar essa condição <add input="{HTTPS}" pattern="off" /> na solução acima. Caso contrário, terminará em um loop. Então a regra será a seguinte,

<globalRules>
    <rule name="Redirect to HTTPS" enabled="true" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTPS}" pattern="off" />
            <add input="{HTTP_HOST}" pattern="(.+)\.test\.com" />
        </conditions>
        <action type="Redirect" url="https://{C:0}/{R:0}" />
    </rule>
</globalRules>
    
por 10.04.2017 / 12:02