У меня настроен 301, который перенаправляет http://domain.com к http://www.domain.com (http://www.domain.com$ S $ Q), но если я перейду на https: //domain.com Я получаю сообщение об ошибке SSL (как ожидается, www.domain.com).
Есть ли способ сделать его перенаправлением до того, как браузер выдаст ошибку сертификата?
Да, но не так, как вы думаете.
Если вы не можете этого сделать, вам, к сожалению, не повезло. Вы не можете использовать заголовки 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