Не уверен, если вы все еще ищете ответ, но здесь идет.После некоторых поисков, проб и ошибок я нашел успех по следующим правилам.Большинство примеров, с которыми я сталкивался, излишне сложны в отношении сопоставления с образцом и представляют другие переменные, которые мешают правилам работать должным образом.Приведенные ниже правила могут быть применены к любому веб-сайту, и ничто не жестко закодировано, поэтому это всегда должно быть простым заданием копирования и вставки:
<rule name="Redirect to WWW" stopProcessing="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">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="OFF"/>
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>
Обратите внимание на две вещи: redirectType = "Permanent" будетприведет к тому, что правило будет применено, пока история / кэш браузера не будут очищены;это должно быть хорошо, так как браузер будет работать дальше.Кроме того, appendQueryString = "false" необходимо, поскольку переменная сервера {HTTP_URL} уже содержит полную строку запроса;по умолчанию эта опция имеет значение "true" и может привести к дублированию строк запросов.