Хорошо, у вас есть странная проблема с перенаправлением. У меня есть 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 не составит труда.
Спасибо за любую помощь здесь.
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>
Похожие вопросы
Новые вопросы
redirect
Ответ веб-сервера, который просит пользовательский агент не показывать тело ответа, а вместо этого запрашивать другой ресурс. Вопросы могут быть связаны с протоколами перенаправления, равенством каналов и типами перенаправлений.