Назад | Перейти на главную страницу

IIS 8.5 URL Rewrite просто не работает: правила вообще не влияют

Я пытаюсь настроить перезапись 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>