IIs 8 перенаправляет URL с http на https


Я только что настроил ssl для моего dmain и Хоста. Я хочу ограничить свой сайт 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.

2 2

2 ответа:

Я решил эту проблему, добавив этот код в файл 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>
    

Добавьте это в свой Глобал.файл 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/odin (даже в общем хостинге) есть настройка для него, чтобы выбрать url-адрес по умолчанию для вашего приложения.

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

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