Вопрос

Есть ли простой способ перенаправить все попытки перейти на версию сайта HTTP:// на ее эквивалент HTTPS://?

Это было полезно?

Решение

Я думаю, что самый чистый способ - как описано здесь, на 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="Permanent" url="https://{HTTP_HOST}/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

Другие советы

Самым простым и чистым решением, которое я нашел, было

  1. В настройках SSL -> требовать SSL.

  2. На страницах ошибок -> При ошибке 403.4 -> Перенаправление на сайт HTTPS.

  3. На страницах ошибок -> Изменить настройки функций...-> Установить подробные ошибки для локальных запросов и пользовательские страницы ошибок для удаленных запросов.

Преимущество в том, что он не требует дополнительных строк кода.Обратной стороной является то, что он перенаправляет вас на абсолютный URL-адрес.

Чистый способ меняет только схему URL с http -> https и оставляет все остальное эквивалентным.Это должно быть на стороне сервера, чтобы не было проблем с браузером.

На сайте JPPinto.com есть Пошаговые инструкции о том, как это делается, за исключением того, что они используют javascript (HttpRedirect.htm) вместо перенаправления на стороне сервера.По какой-то причине я не смог заставить IE запустить javascript, если у вас включена функция «Показывать дружественные сообщения об ошибках HTTP», которая включена по умолчанию.Еще одна особенность сценария заключается в том, что перенаправление на путь не работало даже в FF или Chrome.Скрипт всегда перенаправляет на root.(Возможно, я что-то пропустил, потому что должно быть перенаправление на путь.)

По этим причинам я использовал страницу ASP для перенаправления.Обратной стороной, конечно, является то, что для этого требуется, чтобы на сервере был включен классический ASP.

В OpsanBlog есть ASP-скрипт и инструкции это хорошо работает с IIS6.

У меня было несколько проблем при использовании этого метода с IIS7.В основном проблемы с пользовательским интерфейсом, поскольку в IIS7 очень легко что-то пропустить.

  • Во -первых, вам нужно установить ASP в качестве функции роли веб -сервера.
  • Во -вторых, использование виртуального каталога не работал, как и ожидалось в IIS7, и я не пытался отладить это.Вместо этого я помещаю файл в корневую папку сайта и использовал url '/sslredirect.asp' на странице ошибки 403.4, чтобы справиться с ним.
  • И последнее, самое сложное: вы НЕ следует применять SSL для SSLRedirect.asp.В противном случае вы получите ошибку 403.4.Для этого вы выбираете файл в IIS7 «Просмотр содержимого» и переключаетесь на «Просмотр функций», чтобы вы могли редактировать настройки SSL для одного файла и отключать флажок «Требовать SSL».

Диспетчер IIS должен отображать имя файла в заголовке.

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:"));
}

Я использую классический asp (интранет), и на страницах, требующих входа в систему, включаемый файл входа в систему выполняет перенаправление:

if Request.ServerVariables("SERVER_PORT_SECURE") <> "1" or Request.ServerVariables("HTTPS") <> "on" then 
    Response.Redirect "https://" & Request.ServerVariables("SERVER_NAME") & Request.ServerVariables("URL")
end if

Это, конечно, не включает данные GET или POST.По сути, это чистое перенаправление на вашу защищенную страницу.

Я думаю, что под «чистым» вы подразумеваете, например, с перенаправлением 300.Конфигурация для множества серверов и языков здесь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top