Если вы просто хотите перенаправить на основе используемого в настоящее время протокола (в соответствии с вашим последним примером), то есть гораздо более простое решение, которое позволит вдвое сократить количество необходимых вам правил. Вот что я узнал от моего коллеги.
Как вы видели, аргумент {HTTPS} будет содержать значение ON или OFF. Вы можете сопоставить это значение с https: // или http: //, введя это значение в карту перезаписи.
Вот как это будет работать:
1 - Создать раздел карты перезаписи для сопоставления значения {HTTPS}:
<rewriteMap name="MapProtocol" defaultValue="OFF">
<add key="ON" value="https://" />
<add key="OFF" value="http://" />
</rewriteMap>
Вам решать, хотите ли вы включить только протокол или точку с запятой и косую черту. Для решения это не имеет значения, но имейте в виду, куда бы вы ни ссылались.
2- Обращайтесь к этой карте везде, где вам нужно. В этом примере он используется в исходящих правилах, но он также будет работать в вашем сценарии:
<rule name="Outbound-Rule Name" stopProcessing="true" preCondition="ResponseIsHtml">
<match filterByTags="A, Link, Script" pattern="YOUR PATTERN" />
<action type="Rewrite" value="{MapProtocol:{HTTPS}}{HTTP_HOST}/REST OF RELATIVE LINK HERE" />
</rule>
Вот и все, модуль перезаписи URL теперь должен автоматически использовать правильный протокол для ваших ссылок в зависимости от того, используете ли вы https или, конечно, http.
Надеюсь, это поможет!