Перезапись URL-адресов с https: // на http: // в IIS7 - PullRequest
34 голосов
/ 08 октября 2009

Я пытаюсь переписать URL из формы:

https://example.com/about

к форме

http://example.com/about

с использованием перезаписи URL IIS7 :

<!-- http:// to https:// rule -->
<rule name="ForceHttpsBilling" stopProcessing="true">
  <match url="(.*)billing/(.*)" ignoreCase="true" />
  <conditions>
    <add input="{HTTPS}" pattern="off" ignoreCase="false" />
  </conditions>
  <action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}{REQUEST_URI}" />
</rule>

<!-- https:// to http:// rule -->    
<rule name="ForceNonHttps" stopProcessing="true">
  <match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
  <conditions>
      <add input="{SERVER_PORT}" pattern="^443$" />
  </conditions>
  <action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
</rule>

Я в растерянности; Я просматривал в Интернете примеры и пробовал каждый синтаксис, который только мог придумать. Указанные мной правила перезаписи просто не работают вообще для любых запросов https, как будто все запросы https:// полностью невидимы для механизма перезаписи.

правила работают нормально; см. ответ ниже.

Ответы [ 4 ]

26 голосов
/ 08 октября 2009

Оказывается, что У меня был порт: 443, связанный с другим сайтом!

Приведенные выше правила перезаписи отлично работают для перезаписи http: // to https: // и наоборот - хотя могут быть более оптимальные или простые способы сделать это.

Оставив этот вопрос здесь для поиска будущих путешественников, так как я не видел много хороших примеров сценария переписывания https: // to http: // в Интернете.

5 голосов
/ 26 сентября 2012

Этот пост немного староват, но я хотел ответить. Я использую ASP.Net MVC3, и ответ Фабио выше не сработал для меня. Самым простым решением, которое я придумал для обработки перенаправления https на http, при этом разрешая действительным https-страницам запрашивать защищенный контент, было просто добавить правила белого списка над моими перенаправлениями https / http:

    <rule name="WhiteList - content folder" stopProcessing="true">
      <match url="^content/"/>
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false"/>
      <action type="None"/>
    </rule>
    <rule name="Redirect to HTTPS" stopProcessing="true">
      <match url="(.*)billing/(.*)" ignoreCase="true" />
      <conditions>
        <add input="{HTTPS}" pattern="^OFF$" />
      </conditions>
      <action type="Redirect" url="https://{HTTP_HOST}/billing/" redirectType="SeeOther" />
    </rule>
    <rule name="ForceNonHttps" stopProcessing="true">
      <match url="(.*)billing/(.*)" ignoreCase="true" negate="true" />
      <conditions>
        <add input="{SERVER_PORT}" pattern="^443$" />
      </conditions>
      <action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}{REQUEST_URI}" />
    </rule>
2 голосов
/ 04 августа 2011

Ваше решение работает, но проблема в том, что ваша вторая инструкция kill first инструкция для любых ссылок не является (. ) биллингом /(.), включая ваши css, js и images.

Вы можете использовать это правило https to http:

<rule name="HTTPS to HTTP redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{RequiresSSL:{R:1}}" pattern="(.+)" negate="true" />
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
<add input="{REQUEST_URI}" pattern="^(.+)\.(?!aspx)" negate="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="http://{HTTP_HOST}/{R:1}" />
</rule>
1 голос
/ 26 апреля 2017

, пожалуйста, сначала рассмотрите привязку https к вашему веб-сайту для того, чтобы сделать нижеприведенный модуль перенаправления для работы крайне важным (поэтому привязывайте ваше веб-приложение с самоподписанным или действительным сертификат)

последняя часть в web.config для перенаправления https на http :

 <rewrite>
    <rules>
        <rule name="Force NonHTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
               <add input="{HTTPS}" pattern="on" />
            </conditions>
            <action type="Redirect" url="http://{HTTP_HOST}/{REQUEST_URI}" />
        </rule>
    </rules>
</rewrite>

если вам нужен эквивалентный IIS GUI в модуле перезаписи, см. Изображение ниже

enter image description here

источник: посмотрите tech-net для более подробной информации и пошагового руководства.

...