Наш веб-сайт, размещенный в 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, работают нормально, поэтому вряд ли это проблема с модулем перезаписи.
В недоумении относительно того, что я делаю неправильно?