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

Как перенаправить https://domain.com на https://www.domain.com с помощью IIS?

У меня настроен 301, который перенаправляет http://domain.com к http://www.domain.com (http://www.domain.com$ S $ Q), но если я перейду на https: //domain.com Я получаю сообщение об ошибке SSL (как ожидается, www.domain.com).

Есть ли способ сделать его перенаправлением до того, как браузер выдаст ошибку сертификата?

Да, но не так, как вы думаете.

  • Вам понадобится действующий сертификат для domain.com
  • Вам понадобится domain.com и www.domain.com, чтобы иметь отдельные общедоступные IP-адреса.

Если вы не можете этого сделать, вам, к сожалению, не повезло. Вы не можете использовать заголовки HOST, чтобы различать два запроса, потому что это слишком поздно (поэтому отдельные IP-адреса). И если у вас нет действующего сертификата, браузер захлебнется, поэтому вам также понадобится второй сертификат.

Боюсь, что обойти эти требования невозможно.

У меня было такое же требование, как перенаправление всех https://domain.com к https://www.domain.com а также перенаправить весь http на https, вот как я добился и заставил его работать IIS 8.5. Я использовал следующий код в файле web.config:

<system.webServer>
  <!--Maybe some other settings-->
      <rewrite>
          <rules>
              <rule name="http to https" stopProcessing="true">
                  <match url="(.*)" />
                  <conditions>
                      <add input="{HTTPS}" pattern="^OFF$" />
                  </conditions>
                  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
              </rule>
              <rule name="Redirect to www" patternSyntax="Wildcard" stopProcessing="true">
                 <match url="*" />
                 <conditions>
                   <add input="{HTTP_HOST}" pattern="yourdomainname.com" />
                 </conditions>
                 <action type="Redirect" url="https://www.yourdomainname.com/{R:0}" />
              </rule>
          </rules>
      </rewrite>
  <!--Maybe some other settings-->
</system.webServer>

Это сработало как шарм. На самом деле я сгенерировал указанный выше код в web.config, установив «Модуль перезаписи URL» с помощью установщика веб-платформы. После установки я нашел этот модуль в IIS 8.5, затем добавил новые правила. Надеюсь, вы можете напрямую написать этот код в своем web.config, чтобы все было сделано.

Есть способ обойти это. Вы можете получить единый сертификат как для www.domain.com, так и для domain.com. Тогда вы можете использовать обычное перенаправление. Однако эти многодоменные сертификаты обычно дороже.

Я настраиваю оба домена со своими собственными файлами conf, (общим) сертификатом и отдельными домашними каталогами, а затем добавляю мета-обновление html в index.html на domain.com для перенаправления на www.domain.com. Это работает, но, возможно, есть способ получше.

В сертификате для www.domain.com вам нужно будет добавить запись SAN для domain.com. Ваш эмитент повторно выдаст сертификат. Сертификат будет работать для этого имени после того, как он будет добавлен в сертификат как SAN.

Запись SAN - это альтернативное имя субъекта. К сертификату можно добавить несколько сетей SAN.

Вот дополнительная информация: https://www.digicert.com/subject-alternative-name.htm