Перенаправление с HTTP на HTTPS в IIS

#asp.net #ssl #https #url-rewriting #acumatica

#asp.net #ssl #https #переписывание URL-адреса #acumatica

Вопрос:

Я должен перенаправлять свой сайт с http на https всякий раз, когда какой-либо пользователь открывает мой сайт с помощью http.

Например: —

http:\abc.mywebsite.com следует перейти к https:\abc.mywebsite.com

Обратите внимание, что в приведенном выше URL-адресе это не www.mywebsite.com , вместо этого это пользовательский URL-адрес как abc.mywebsite.com .

Я попробовал инструмент перезаписи URL и выполнил все шаги, упомянутые здесь. Однако я не могу заставить URL-адрес перезаписываться для правильной работы перенаправления.

Вот как выглядит правило перенаправления URL в IIS: —

введите описание изображения здесь

Вот как выглядит мой web.config после добавления правила с использованием перезаписи URL.

 <configuration>
  .....
  .....
  .....
  <system.webServer>
    .....
    .....
    .....
    <rewrite>
      <rules>
        <rule name="Http to Https" enabled="true" stopProcessing="true">
          <match url="(.*)" />
           <conditions logicalGrouping="MatchAny">
            <add input="{HTTPS}" pattern="^OFF$" />
           </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
  .....
  .....
  .....
</configuration>  

Я также снял флажок Требовать SSL в настройках SSL.

Однако после выполнения всего этого мой веб-сайт по-прежнему не перенаправляется на https. Просто выдает ошибку «… не удается добраться до этой страницы».

Пожалуйста, подскажите, не упустил ли я чего-нибудь здесь.

Ответ №1:

У меня есть некоторые сомнения по поводу правил перезаписи, потому что я вижу много разных примеров.

Попытка использовать другие значения, подобные приведенным в этом блоге Microsoft, может дать лучшие результаты:

 <rewrite>
    <rules>
        <rule name="Redirect to http" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*" negate="false" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTPS}" pattern="off" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" />
        </rule>
    </rules>
</rewrite>
  

Вы также можете настроить трассировку для неудачных запросов в IIS 7. Это может дать вам представление о том, почему не удается перенаправить.

Комментарии:

1. Спасибо HB_Acumatica, я обязательно попробую трассировку. Что касается блога Microsoft, я пробовал это и многие другие варианты / предложения для того же, но ничего не сработало.

2. Microsoft Blog link содержит полное пошаговое руководство по HTTP-> HTTPS, лично я бы постарался следовать ему как можно точнее и после этого отлаживать с помощью журналов трассировки. Информация там, вероятно, более надежна, чем где-либо еще, поскольку она поступила от сотрудника MS.

Ответ №2:

Я столкнулся с такой же проблемой на том же сайте при попытке перенаправить с http на https. Я создал новый сайт и добавил привязку как http://www.example.com / И затем я создал новый Http-редирект и добавил свой https://www.example.com / это сработало.

Ответ №3:

Убедитесь, что вы правильно настроили привязки в IIS, вторая строка, выделенная красным, должна быть там.

  1. Тип = HTTPS
  2. Имя хоста = адрес сайта, подобный «site.domain.com «
  3. Порт = 443
  4. IP-адрес = IP-адрес сервера, к которому вы пытаетесь получить доступ.

Привязка IIS