Есть ли способ перенаправить все попытки перехода на HTTP: // версию сайта на свой HTTPS: // эквивалент?IIS7: HTTP-> HTTPS Clean
ответ
Я думаю, что самый чистый способ, как описано here on IIS-aid.com. Это только web.config, и поэтому, если вы меняете сервер, вам не нужно помнить все шаги, которые вы выполнили с помощью настраиваемой страницы ошибки 403.4 или других специальных разрешений, она просто работает.
<configuration>
<system.webServer>
<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>
</rewrite>
</system.webServer>
</configuration>
Это прекрасно работает, и для бонусных очков он полностью автономный, поэтому вам не нужно создавать новый веб-сайт, как указано в принятом ответе – WickyNilliams 2012-06-28 10:42:36
Будет ли этот огонь для всех URL-адресов независимо от типа файла. например Прямой URL-адрес файла txt? – Cheekysoft 2013-08-27 16:27:09
Я думаю, что «чисто» вы имеете в виду как с перенаправлением 300. Конфигурация для большого количества серверов & Языки here.
Чистый способ изменяет только схему URL из http -> https и оставляет все остальное эквивалентным. Он должен быть серверным, чтобы не было проблем с браузером.
В JPPinto.com есть Step-By-Step instructions о том, как это делается, за исключением того, что они используют javascript (HttpRedirect.htm) вместо перенаправления на стороне сервера. По какой-то причине я не мог заставить IE запускать javascript, если вы включили «Показать дружественные сообщения об ошибках HTTP», который включен по умолчанию. Другое дело в сценарии заключается в том, что перенаправление на путь не работает даже в FF или Chrome. Сценарий всегда перенаправляется на root. (Возможно, я что-то пропустил, потому что он должен перенаправляться на путь.)
По этим причинам я использовал страницу ASP для перенаправления. Недостатком, конечно же, является то, что для этого на сервере должен быть включен классический ASP.
OpsanBlog имеет ASP script and instructions, который хорошо работает с IIS6.
У меня было несколько вопросов, используя этот метод с IIS7. В основном проблемы с пользовательским интерфейсом, так как IIS7 позволяет пропустить что-то.
- Во-первых, вам необходимо установить ASP как функцию роли веб-сервера .
- Во-вторых, с помощью виртуального каталога не было Работайте, как ожидалось, в IIS7, и я не сделал . Попробуйте отладить это. Вместо этого я помещаю файл в корневую папку сайта и использовал url '/SSLRedirect.asp' на странице ошибок 403.4, чтобы ссылаться на него.
- Последняя, самая сложная часть, вы не должны применять SSL для SSLRedirect.asp. В противном случае вы получите ошибку 403.4. Для этого вы выбираете файл в IIS7 «Просмотр содержимого» и переключаетесь на «Вид функций», чтобы вы могли редактировать настройки SSL для одного файла и отключать флажок «Требовать SSL».
Менеджер IIS должен показать имя файла в заголовке.
Связанные инструкции на JPPinto.com были обновлены, чтобы подчеркнуть, что это не работает на IIS 7.5 или R2. Говорят, что вы получите нарушение блокировки из-за изменений в безопасности в новых версиях IIS. Вместо этого они предлагают использовать метод URL Rewrite 2.0 (аналогичный подход в соответствии с ответом от @toxaq). – AussieRob 2016-02-15 04:22:35
Самый простой и чистый решение, которое я нашел было
В настройках SSL -> требуют SSL
В Страницы ошибок -> Об 403.4 ошибки -> Перенаправление на HTTPS сайт
В Страницах ошибок -> Изменить настройки параметров ...-> Установить подробные ошибки для локальных запросов и страницы пользовательских ошибок для удаленного запроса
Преимущество в том, что для этого не требуется никаких дополнительных строк кода. Недостатком является то, что он перенаправляет вас на абсолютный URL-адрес.
Global.asax
protected void Application_BeginRequest()
{
if (!Context.Request.Url.AbsoluteUri.Contains("localhost") && !Context.Request.IsSecureConnection)
Response.Redirect(Context.Request.Url.ToString().Replace("http:", "https:"));
}
Ответ можно найти на блоге Джеймса Ковача: http://jameskovacs.com/2007/05/09/how-to-autoredirect-to-a-sslsecured-site- in-iis/ – cpuguru 2011-03-08 19:33:45
Если вы находитесь на IIS 7 и на R2 [здесь] (http://www.jppinto.com/2010/03/automatically-redirect-http-requests-to-https-on-iis7-using- url-rewrite-2-0 /) - это руководство, которое работает и самое «чистое» – 2012-09-21 15:37:08