Я пытаюсь настроить http к https, переписывают в IIS 8.5 с помощью Переписать модуля. Абсолютно ничто, что я попробовал, не имеет влияния вообще. 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.
У меня работает:
<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>
Ну, я думал, что столкнулся с тем же случаем, что и MrLane в IIS 8.5.
Мне потребовался день, чтобы узнать, что у меня не было веб-сайта, работающего на порту 80.
Я просто добавляю эту привязку (порт 80), и правило работает, как ожидалось.
Надеюсь, это поможет раскрыть дело мистера Лейна.