У меня есть приложение angular, размещенное в IIS. Чтобы перенаправить все запросы в корень приложения и разрешить угловую маршрутизацию работать с различными маршрутами, я добавил файл web.config с правилом перезаписи URL следующим образом:
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="Angular Routes" stopProcessing="true">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="/" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Работает нормально. Однако теперь мне нужно заставить приложение перенаправить с HTTP на HTTPS. Для этого я могу добавить новое правило, как показано в следующем сообщении: https://stackoverflow.com/questions/38334894/angular-2-always-redirect-to-https-instead-of-using-http
Правило принудительного HTTPS:
<configuration>
<system.webServer>
<rewrite>
<rules>
<clear />
<rule name="Redirect to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
Это правило также работает, но оно нарушает мое перенаправление на корневое правило, определенное ранее. Итак, есть ли у кого-нибудь идея, как я могу смешать эти два правила вместе или каким другим способом я могу достичь обеих целей?