Перенаправить на www в iis? - PullRequest
0 голосов
/ 09 июля 2019

Я знаю, что уже было довольно много сообщений по этому вопросу, но ответы у меня не работают.

когда я набираю example.com в URL, я хочу перенаправить его на https://www.example.com

У меня есть эти правила, но когда я вставляю example.com, я получаю 404.

    <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>
    <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>

редактировать

Я также попробовал это , но все еще не получил ожидаемый повтор

1 Ответ

0 голосов
/ 10 июля 2019

Согласно вашему правилу перезаписи 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

...