IIS Rewrite Rule в web.config для перенаправления HTTPS-запросов на HTTP

Мне нужно перенаправить все https-запросы на http, например, если кто-то посещает https://www.example.com/another-page/ до http://www.example.com/another-page/

У меня есть следующее правило перезаписи в моем web.config прямо сейчас, но оно работает неправильно. Он перенаправляет https://www.example.com/another-page/ на https://www.example.com/, поэтому корень сайта, но вместо этого я хочу, чтобы перенаправление оставалось в одном URL-адресе и переписывало https только http.

 <rule name="Redirect to HTTP" stopProcessing="true">
   <match url="(.*)" />
     <conditions>
       <add input="{R:1}" pattern="^onepage/(.*)$" negate="true" />
       <add input="{HTTPS}" pattern="^ON$" />
     </conditions>
     <action type="Redirect" url="http://{HTTP_HOST}/{R:0}" redirectType="Permanent" />
 </rule>

Любая помощь по изменению вышеприведенного правила, так что он только изменяет https на http, но сохраняет полный URL-адрес, который был бы оценен.

Ответ 1

Я установил ваше правило, немного почистил, и это сработало; поэтому на самом деле это не очень много нового.

Предложение: удалите условие ввода onepage только для тестирования, так как cheesmacfly предлагается в вопросительном комментарии.

Кроме того, попробуйте изменить действие на {R:1} вместо {R:0}. В этом случае это не имеет значения, но мне просто нравится использовать 1 и выше для соответствия определенной группе захвата. R: 0 означает всю согласованную строку, которая меня всегда немного смущает.

<rule name="Redirect to HTTP" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTPS}" pattern="^ON$" />
    </conditions>
    <action type="Redirect" url="http://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>

Одна из возможностей заключается в том, что ваш браузер кэшировал предыдущую попытку ваших правил. Когда redirectType является постоянным, и вы все еще разрабатываете или тестируете, браузер часто кэширует предыдущее правило. Очистите кеш браузера и/или удалите постоянный и/или просмотрите в режиме инкогнито. Когда закончите тестирование, измените его на постоянное. См. Номера 2 и 3 в этом ответе: fooobar.com/questions/4362/...

Ответ 2

Вставьте код ниже в web.config.

<rule name="Redirect to http" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP}" pattern="off" ignoreCase="true" />
    </conditions>
    <action type="Redirect" url="http://{HTTPS_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" />
</rule>