Хорошо, у вас есть странная проблема с перенаправлением. У меня есть 3 доменных имени, поэтому давайте назовем их следующим образом

maindomain.com
aliasdomain.net
aliasdomain.org

Мы используем Let's Encrypt для https через IIS на сервере Windows 2016.

Мы хотим, чтобы каждый раз, когда человек вводил в любом из 3 доменов с www или с www, все перенаправлялись на доменное имя www.maindomain.com.

Поскольку сертификат Let's encrypt не создает www. версий для псевдонимов домена это вызывает у нас некоторые проблемы. Это правила web.config, которые мы используем, но они не работают.

<rule name="Redirect to WWW" enabled="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^www\." negate="true" />
    </conditions>
    <action type="Redirect" url="https://www.{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>
<rule name="Redirect to HTTPS" enabled="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="OFF" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>

Итак, результаты этого следующие Это работает www.maindomain.com работает и перенаправляет на https://www.maindomain.com maindomain.com работает и перенаправляет на https://www.maindomain.com

Это не работает, и, как ни странно, отображается стандартная целевая страница IIS. aliasdomain.net не работает, перенаправляет на http://www.aliasdomain.net www.aliasdomain.net не работает и перенаправляет на http://www.aliasdomain.net

Это совсем не работает aliasdomain.org не работает с переадресацией на https://www.aliasdomain.org www.aliasdomain.org не работает и перенаправляет на https://www.aliasdomain.org

Не знаю, как заставить это делать то, что мы хотим. Вы можете подумать, что перенаправить любую версию любого доменного имени на https://www.maindomain.com не составит труда.

Спасибо за любую помощь здесь.

0
Renshi 21 Июл 2017 в 22:57
Вы сохранили web.config после изменения rewriteRules.config?
 – 
Vlado Pandžić
22 Июл 2017 в 00:18
Да я сохранил это.
 – 
Renshi
23 Июл 2017 в 02:20

1 ответ

Лучший ответ

Проблема с вашим правилом заключается в том, что вы используете {HTTP_HOST} в своем действие перенаправления. Этот параметр будет принимать входящее имя хоста от просьба. Я думаю, что это не то, что вам нужно. <код> <действие type = "Redirect" url = "https: // {HTTP_HOST} {HTTP_URL}" redirectType = "Постоянный" appendQueryString = "false" />

Пожалуйста, попробуйте следующее правило. Он перенаправляет, если имя хоста не совпадает www.maindomain.com, также используйте https

 <rule name="CanonicalHostNameRule1" stopProcessing="true">
                    <match url="(.*)" />
                    <conditions logicalGrouping="MatchAny">
                        <add input="{HTTP_HOST}" pattern="^www\.maindomain\.com$" negate="true" />
                        <add input="{HTTPS}" pattern="off" />
                    </conditions>
                    <action type="Redirect" url="https://www.maindomain.com/{R:1}" />
                </rule>
1
Rohith 22 Июл 2017 в 09:06
На самом деле это произошло после того, как я очистил кеш. Спасибо.
 – 
Renshi
23 Июл 2017 в 04:10