Правило перезаписи HTTPS не работает в IIS - PullRequest
0 голосов
/ 11 мая 2018

Наш веб-сайт, размещенный в IIS 10, защищен действующим сертификатом SSL. Работает нормально по адресу https.

Чтобы перехватить http-трафик и перенаправить его, я добавил в файл web.config правило перезаписи:

<rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="(.*)" negate="false" />
    <conditions logicalGrouping="MatchAll">
                <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

Я использовал это раньше и ожидал, что он будет работать нормально. Однако на этом сервере он не работает. Попытка попасть на сайт по http приводит к ошибке ERR_EMPTY_RESPONSE.

Я просмотрел кучу учебных пособий, большинство из которых, казалось, поддерживали переписанный текст, который я получил. Тем не менее, я нашел и попробовал эту немного другую версию

<rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAny">
      <add input="{SERVER_PORT_SECURE}" pattern="^0$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
</rule>

Но это не сработало и с тем же ERR_EMPTY_RESPONSE для http.

Сайт привязан к https через имя хоста на 443 и имеет привязку к порту 80 с пустым именем хоста.

Другие правила перезаписи, такие как белый список доступа на основе IP, работают нормально, поэтому вряд ли это проблема с модулем перезаписи.

В недоумении относительно того, что я делаю неправильно?

...