Я пытаюсь настроить перезапись http на https в IIS 8.5 с помощью модуля Rewrite. Абсолютно ничего из того, что я пробовал, не оказывает никакого влияния. URL-адрес имеет вид: http://users-dev.somedomain.com. Правило, созданное в настоящее время в web.config:
<rewrite>
<rules>
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>
И с тех пор я перепробовал много вариантов. Раньше, возясь с переписыванием URL-адресов, я мог видеть, как действуют различные правила, но теперь кажется, что все, что я делаю, вообще не влияет ... Я подозреваю, что что-то не так с IIS. Я также попытался перезапустить IIS, но безрезультатно ...
Любые идеи?
Оказалось, что в настройках SSL сайтов стоит галочка «Требовать SSL». Если этот флажок установлен, клиент вообще не может пройти через порт 80, и перезапись никогда не происходит ...
Если вы используете модуль перезаписи, у вас не может быть установлен флажок «Требовать SSL», так как первоначальный запрос должен иметь возможность пройти через порт 80.
Ну, я думал, что столкнулся с тем же случаем, что и MrLane на IIS 8.5.
Мне потребовался день, чтобы узнать, что у меня нет веб-сайта, работающего на 80-м порту.
Я просто добавляю эту привязку (порт 80), и правило работает как ожидалось.
Надеюсь, это поможет раскрыть дело MrLane.
Это работает для меня:
<rule name="Redirect to HTTPS" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>