IIS: удалить http и принудительно установить https - PullRequest
0 голосов
/ 17 января 2020

У меня есть простой веб-сайт, и я хотел бы убрать www and, заставив его быть https.

Мне удалось заставить работать 3 из возможных комбинаций, но я застрял на последней.


Я использую перезапись URL с кодом, заимствованным из других вопросов, заданных здесь. У меня включены следующие 2 правила:

    <rule name="Remove www" enabled="true" stopProcessing="true">
      <match url="(.*)" negate="false"></match>
      <conditions>
        <add input="{HTTP_HOST}" pattern="^www\.(.*)$" />
      </conditions>
      <action type="Redirect" url="https://{C:1}/{R:1}" appendQueryString="true" redirectType="Permanent" />
    </rule>
    <rule name="Force HTTPS" enabled="true">
      <match url="(.*)" ignoreCase="false" />
      <conditions>
        <add input="{HTTPS}" pattern="off" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
    </rule>

У меня есть следующие перенаправления URL:

Есть идеи, как мне справиться с этим условием?

Спасибо

Ответы [ 2 ]

0 голосов
/ 20 января 2020

Спасибо за ваш вклад.

Вот как я решил свою проблему.

<rule name="Remove www" enabled="true">
  <match url="(.*)" negate="false"></match>
  <conditions>
    <add input="{HTTP_HOST}" pattern="^www\.(.*)$" />
  </conditions>
  <action type="Redirect" url="https://{C:1}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>

<rule name="Force HTTPS" enabled="true" stopProcessing="true">
  <match url="(.*)" ignoreCase="false" />
  <conditions>
    <add input="{HTTPS}" pattern="off" />
  </conditions>
  <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
</rule>

Я добавил тег stopProcessing only во второе правило.

Я изменил свою DNS-запись, оставив только следующее правило:

CNAME Record    www     website.tld.

В IIS я добавил (восстановил) привязки для домена как с www*1016*, так и без него.

Мои рассуждения о том, почему это работает, следующие:

  • Сайт может обрабатывать как www.website.tld, так и website.tld.
  • Правила перезаписи URL будут обрабатывать перенаправление.

Звонок на сайт может как удалить www as, так и перейти на https. Если разрешить правилу перезаписи выполнять оба действия (отключение stopProcessing ), это может произойти.

0 голосов
/ 17 января 2020

Вы пытались изменить порядок правил? Иногда это может помочь.

...