Перенаправление с www на нет-www не работает

#asp.net #asp.net-core #iis #asp.net-web-api #web-config

Вопрос:

Приложение построено на asp.net ядро 3.1 и реагируйте. Они имеют одно и то же происхождение.

В web.config перенаправление с http рабочего на https рабочий.

В web.config перенаправление с www.example.com на example.com не работает

         // Piece of my web.config
        <rules>
          <rule name="HTTP to HTTPS redirect" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
            </conditions>
            <action type="Redirect" redirectType="Permanent" url="https://{HTTP_HOST}/{R:1}" />
          </rule>
          <rule name="RedirectWwwToNonWww" stopProcessing="false">
            <match url="(.*)" />
            <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
              <add input="{HTTP_HOST}" pattern="^(www.)(.*)$" />
            </conditions>
            <action type="Redirect" url="https://{C:2}{REQUEST_URI}" redirectType="Permanent" />
          </rule>
        </rules>

 
  • В браузере www.example.com переходит в цикл перенаправления и показывает
    ERR_TOO_MANY_REDIRECTS
  • В почтальоне ошибка заключается в Error: Exceeded maxRedirects. Probably stuck in a redirect loop https://www.example.com/

Ответ №1:

Вы можете попробовать это правило для перенаправления с www на none-www:

 <rule name="SecureRedirect" stopProcessing="true">
  <match url="^(.*)$" />
    <conditions>
      <add input="{HTTPS}" pattern="off" />
      <add input="{HTTP_HOST}" pattern="^(www.)?(.*)$" />
    </conditions>
  <action type="Redirect" url="https://{C:2}" redirectType="Permanent" />
</rule>
 

Комментарии:

1. Ty. Работает, когда 1 правило вместо 2 правил. Я думаю, что 2 правила идут по кругу друг за другом. Это логично, но я не нашел такой информации. Я предполагаю, что идея сейчас в том, что для этого есть только 1 ввод и 1 действие(перенаправление)?

2. В конце концов, позже я перенаправлю с none-www на www. Каковы будут условия и действия?

3. Порядок выполнения правил URL-адресов-сверху вниз. Если вы хотите перенаправить с none-www на www, вы можете перейти по этой ссылке: https://weblogs.asp.net/owscott/iis-url-rewrite-rewriting-non-www-to-www .