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>