Назад | Перейти на главную страницу

IIS переписывает с http на https только для поддоменов одного домена

У меня есть веб-сервер IIS7 с несколькими запущенными сайтами. Некоторые из сайтов являются субдоменами одного домена, а другие - полностью отдельными доменами. Я хочу использовать перезапись IIS для перенаправления всех сайтов поддоменов одного домена на https, но я хочу, чтобы остальные домены оставались такими, какие они есть. Например, на одном веб-сервере у меня есть следующие сайты:

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

И я хочу настроить глобальную перезапись IIS для перенаправления http://one.test.com и http://two.test.com на https, но это не повлияет на otherdomain.com.

Вот что у меня есть до сих пор, и когда я протестировал регулярное выражение, оно кажется правильным, но не перенаправляет сайты поддоменов:

<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>

Я слишком усложняю это или упускаю что-то очевидное?

Ура.

Вам нужно добавить условия которые соответствуют HTTP_HOST вашему правилу (переменная url в URL Rewrite не включает имя хоста).

<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>

Это правило должно перенаправлять все запросы на * .test.com на HTTPS.

Вы должны добавить это условие <add input="{HTTPS}" pattern="off" /> в приведенном выше решении. В противном случае он завершится циклом. Итак, правило будет следующим:

<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>