IIs 8 Перенаправление URL с http на https

Я только что настроил ssl для моего dmain и host. Я хочу ограничить свой сайт только https://www.example.com ТОЛЬКО.

Если любой пользователь попытался открыть http://example.com, www.example.com, example.com или https://example.com, он должен быть перенаправлен на https://www.example.com

Перенаправление должно быть только для имени домена. Остальная часть любого URL-адреса останется как есть.

Например: если пользователь открыл example.com/dir1/page1.aspx, он должен быть перенаправлен на https://www.example.com/dir1/page1.aspx

Я хочу сделать это с помощью правил перезаписи IIS.

Ответ 1

Я решил эту проблему, добавив этот код в файл web.config в корневой каталог домена.

  • Первое правило соответствует URL-адресу, если он не запускает с www, что когда-либо это http или https
  • второе правило соответствует URL-адресу, если он запускает с помощью www, но не https

    <system.webServer>
     <rewrite>
      <rules>
    
        <rule name="Redirect from non www" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTP_HOST}" pattern="^example.com$" />
          </conditions>
          <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
        </rule>
    
        <rule name="Redirect from non https" stopProcessing="true">
          <match url=".*" />
          <conditions>
            <add input="{HTTPS}" pattern="^OFF$" />
            <add input="{HTTP_HOST}" pattern="^www.example.com$" />
          </conditions>
          <action type="Redirect" url="https://www.example.com/{R:0}" redirectType="Permanent" />
        </rule>
    
      </rules> 
     </rewrite>
    </system.webServer>
    

Ответ 2

Добавьте это в свой файл global.asax, если у вас есть контроль над iis или использование общего хостинга, где хостинговая компания не позволяет вам изменять настройки.

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (HttpContext.Current.Request.IsSecureConnection.Equals(false) && HttpContext.Current.Request.IsLocal.Equals(false))
    {
        Response.Redirect("https://" + Request.ServerVariables["HTTP_HOST"] + HttpContext.Current.Request.RawUrl);
    }
}

Редакция:

Для канонического тега (www.example.com) вам не нужно вносить какие-либо изменения в свой код. на панели plesk panel/odin (даже на общем хостинге) есть параметр, чтобы выбрать URL-адрес по умолчанию для вашего приложения.

Он автоматически перенаправит ваш сайт на www.example.com

Настройки в настройках хостинга вашего сайта. выберите предпочтительный вариант домена для www