Web.config. Перенаправить весь трафик на www.my ... Используя элемент rules - PullRequest
13 голосов
/ 17 января 2012

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

. Я хочу, чтобы ВСЕ трафик переходил наhttps://www.mydomain.com. Возможно ли это с помощью элемента rules файла 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>

1 Ответ

23 голосов
/ 17 января 2012

Правило

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

Заключение

Для более полного объяснения см. здесь .

...