Подтвердить что ты не робот

Web.config. Перенаправить весь трафик на www.my... Использование элемента правил.

У меня есть файл web.config, который автоматически отправляет трафик на HTTPS. Однако, если кто-то входит в MyDomain.com, он перейдет на https://mydomain.com, и если кто-то войдет на сайт www.mydomain.com, он перейдет к https://www.mydomain.com.

Я хочу, чтобы весь трафик шел на https://www.mydomain.com. Возможно ли это с помощью элемента правил web.config? В настоящее время мой файл выглядит следующим образом:

<rewrite>
  <rules>
      <rule name="HTTP to HTTPS redirect" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
              <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
      </rule>
  </rules>

4b9b3361

Ответ 1

Правило

<rule name="Redirect to www subdomain">

  <match url=".*" />

  <conditions logicalGrouping="MatchAll">
    <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" />
    <add input="{SERVER_PROTOCOL}" pattern="^(.*)(/.*)?$"/>
  </conditions>

  <action type="Redirect" url="{C:1}://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/>

</rule>

Объяснение правила

  • <match /> Ограничивает правило только запросами, чей путь и строка запроса соответствуют заданному шаблону. В нашем случае мы хотим сопоставить все пути и строки запроса, так как мы будем перенаправлять на основе домена.

  • <conditions /> Ограничивает еще одно правило только согласованными запросами, удовлетворяющими заданным условиям. Первое условие исключает запросы, домен которых уже начинается с "www". Второе условие существует только для обратной ссылки {C: 1} и не должно отфильтровывать что-либо.

  • <action> добавляет "www." к домену, а затем перенаправляет.

Переменные

  • {R:0} является обратной ссылкой на полное соответствие тега <match \>. Ссылка на обратную ссылку должна содержать только строку пути и запроса, поскольку это все, что соответствует <match \>.

  • {C:1} является обратной ссылкой на первую группу соответствий из конечного условия. Это должно содержать все до "/" в переменной {SERVER_PROTOCOL}.

  • {HTTP_HOST} - это переменная сервера, которая содержит запрошенный домен. (См. здесь для полного списка.)

  • {SERVER_PROTOCOL} другая переменная сервера. Его формат должен быть "{protocol}/{номер версии}".

Другие параметры

  • <action redirectType> может быть временным, найденным или SeeOther. (См. здесь для получения дополнительной информации.)

  • <conditions logicalGrouping> может быть MatchAll или MatchAny.

Заключение

Для более полного объяснения, пожалуйста, см. здесь.