Согласно вашему правилу перезаписи URL, я обнаружил, что сначала вы устанавливаете правило перезаписи URL. Это означает, что если ваш URL соответствует (. *), Он будет перезаписывать URL в /index.html и не будет переходить ни к какому другому правилу перезаписи URL. Таким образом, ваши правила «Redirect to www» и «Redirect to HTTPS» не будут применены.
Чтобы решить эту проблему, я предлагаю вам попробовать использовать приведенные ниже правила. Сначала сработают правила перенаправления, затем сработало правило перезаписи.
<rule name="Redirect to www" stopProcessing="true">
<match url="(.*)" />
<conditions trackAllCaptures="false">
<add input="{HTTP_HOST}" pattern="^example.com$" />
</conditions>
<action type="Redirect" url="https://www.example.com/{R:1}" redirectType="Permanent" />
</rule>
<rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" ignoreCase="true" negate="false" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="false" redirectType="Permanent" />
</rule>
<rule name="ReactRouter 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="/index.html" />
</rule>
У меня есть эти правила, но когда я добавляю example.com, я получаю 404.
Насколько я знаю, 404 означает, что страница не найдена, я предлагаю вам попробовать использовать трассировку неудачных запросов для отслеживания фактически URL-адреса, на который IIS перенаправляет.
Подробности, вы можете обратиться к статье ниже:
https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules