Web.config Перенаправление HTTP на HTTPS, за исключением субдоменов

Этот вопрос задавался раньше, и я просмотрел вопросы с предложениями, прежде чем задать его сам. К сожалению, я не нашел ответа, который мне нужен.

Я переписал свой файл Web.Config для перенаправления домена TLD с HTTP на HTTPS. У меня проблема в том, что он также перенаправляет сайты поддоменов. Я хочу перенаправлять только TLD, а не сайты поддоменов.

Например, у меня есть www.example1.co.za и www.example2.com.

Мне требуется http://www.example2.com для перенаправления на https://www.example2.com, но не http://a.example2.com или любой поддомен www.example2.com

Он также должен сохранить правило перенаправления для http://example1.co.za для перенаправления на https://example1.co.za

Вот мой код конфигурации:

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

ИЗМЕНИТЬ

Я попытался добавить еще одно правило для исключения субдоменов. однако я получаю ошибку :(

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

person Orion    schedule 06.08.2017    source источник


Ответы (1)


Это правило будет перенаправлять:

http://www.example.com для перенаправления на https://www.example.com,

http://example.com для перенаправления на 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>

Это регулярное выражение ^(www\.)?example\.com$ отфильтровывает запросы, хост которых отличается от example.com или www.example.com.

person Victor Leontyev    schedule 07.08.2017
comment
это исключит поддомены? так что он не будет перенаправлять на sub.example.com? просто нужно подтвердить, прежде чем я протестирую это на живых сайтах. - person Orion; 07.08.2017
comment
Да, будут исключены все домены, кроме: example.com или www.example.com. - person Victor Leontyev; 07.08.2017
comment
У меня есть 2 правила для 2 доменов верхнего уровня. Будет ли это также исключать этот другой домен? Пожалуйста, смотрите отредактированный вопрос. - person Orion; 07.08.2017
comment
в соответствии с этим кодом мой другой домен начал загружаться с префиксом http, есть идеи? - person Rajdip Khavad; 18.12.2018
comment
Нет, у меня нет идеи, вы можете создать новый вопрос с вашими правилами web.config и попытаться объяснить проблему, и я постараюсь ответить на нее. - person Victor Leontyev; 18.12.2018