Перевод сайта на HTTPS и устранение Mixed Content

На сегодняшний день использование протокола HTTPS на сайте необходимо не только для защиты данных, но и для поддержания его позиций в выдаче — поисковые системы учитывают наличие SSL в качестве фактора ранжирования. Чтобы перевести сайт на HTTPS вам необходимо установить SSL-сертификат, а после провести дополнительные настройки, чтобы все работало корректно.

Если вы не хотите заниматься настройкой самостоятельно, рекомендуем вам сертификат SSL Timeweb Pro — при его заказе все необходимые работы по установке и настройке SSL, а также по настройке вашего сайта выполнят наши специалисты. Вы также можете заказать отдельную услугу по настройке сайта при заказе сертификата Let's Encrypt.

Шаг 1. SSL-сертификат

В Timeweb вы можете заказать как сертификаты GlobalSign, так и бесплатный Let's Encrypt. Подробнее о типах сертификатов, их заказе и установке см. в разделе SSL-сертификаты.

После того, как сертификат установлен, потребуется выполнить определенные настройки на сайте и устранить Mixed Content.

Шаг 2. Перенаправление на HTTPS

Включить перенаправление на протокол HTTPS можно через панель управления или с помощью директив в файле .htaccess.

В панели управления:

  1. Перейдите в раздел «Сайты» — «Мои сайты» и нажмите на значок шестеренки у нужного сайта.
  2. В открывшемся окне настроек включите опцию «Использовать безопасное соединение https://» и сохраните изменения.

Чтобы настроить перенаправление на HTTPS вручную, нужно добавить соответствующие директивы в файл .htaccess. Стандартная конструкция выглядит следующим образом:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Также возможны другие варианты настроек; примеры директив и информацию о работе с .htaccess можно найти здесь.

Шаг 3. Дополнительные настройки для CMS

Далее для корректной работы сайта по HTTPS потребуется выполнить дополнительные настройки, в зависимости от вашей CMS.

Wordpress

В случае с Wordpress можно обойтись без настройки вручную и воспользоваться специальными плагинами (например, Really Simple SSL), которые настроят сайт для работы по HTTPS, а также устранят Mixed Content (по крайней мере, частично).

При ручной настройке:

  1. В админ-панели сайта перейдите в раздел «Настройки» — «Общие». 
  2. Укажите протокол HTTPS в полях «Адрес WordPress» и «Адрес сайта», то есть замените http://domain.ru на https://domain.ru.
  3. В конфигурационный файл wp-config.php добавьте строку:
define('FORCE_SSL_ADMIN', true);

Joomla

  1. В админ-панели сайта перейдите в раздел «Система» — «Общие настройки» — вкладка «Сервер». 
  2. В пункте «Включить SSL» выберите «Весь сайт» и сохраните изменения.
  3. В конфигурационном файле configuration.php в строке с параметром $live_site укажите URL вашего сайта с протоколом HTTPS:
public $live_site = 'https://domain.ru';

Bitrix

Для CMS Битрикс рекомендуется выполнить несколько дополнительных проверок:

  • Проверить работу форм обратной связи, так как ajax-запросы могут содержать ссылки на HTTP, которые перестанут работать.
  • Проверить интеграцию с 1С. Если ваша версия 1С не поддерживает протокол HTTPS, добавьте следующий код в .htaccess:
RewriteEngine OnRewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/bitrix/admin/1c_exchange\.php$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
  • Проверить выгрузки на торговые площадки (Яндекс.Маркет и др). Файлы выгрузки будет нужно сгенерировать заново. В разделе «Рабочий стол» — «Магазин» — «Настройки» — «Экспорт данных» включите опцию «Использовать в выгрузке протокол https» в выгрузке Yandex.
  • Если используется CDN, поставьте флажок в поле «Сайт работает по https» в настройках сервиса «Ускорение сайта CDN».
  • В настройках модуля «E-mail маркетинг» включите HTTPS для ссылок в письмах.

Drupal

Для Drupal 8 дополнительных настроек не требуется.

Для Drupal 7 в конфигурационный файл settings.php добавьте строки:

$conf['https'] = TRUE;
$base_url = 'https://domain.ru';

MODX Revolution

  1. В админ-панели сайта перейдите в раздел «Настройки» — «Системные настройки» — вкладка «Сайт». 
  2. Найдите параметр «Тип сервера» (можно искать по ключу server_protocol) и замените HTTP на HTTPS.
  3. Далее найдите параметр «Схема URL» (ключ link_tag_scheme) и замените значение -1 на 1.

Если в работе сайта возникают проблемы, попробуйте дополнительно внести следующие изменения в конфигурационный файл config.inc.php:

Строку:

$isSecureRequest = false;

Заменить на:

$isSecureRequest = true;

Строку:

$url_scheme= $isSecureRequest? 'https://': 'http://';

Заменить на:

$url_scheme= 'https://';

OpenCart

  1. В админ-панели сайта перейдите в раздел «Система» — «Настройки».
  2. На вкладке «Сервер» в пункте «Использовать SSL» выберите «Да» и сохраните изменения.
  3. В конфигурационном файле /public_html/config.php в блоках HTTP и HTTPS укажите URL вашего сайта с протоколом HTTPS:
// HTTP
define('HTTP_SERVER', 'https://domain.ru/');

// HTTPS
define('HTTPS_SERVER', 'https://domain.ru/');
  1. В конфигурационном файле /public_html/admin/config.php также укажите протокол HTTPS в блоках HTTP и HTTPS:
// HTTP
define('HTTP_SERVER', 'https://domain.ru/admin/');
define('HTTP_CATALOG', 'https://domain.ru/');

// HTTPS
define('HTTPS_SERVER', 'https://domain.ru/admin/');
define('HTTPS_CATALOG', 'https://domain.ru/');

Prestashop

  1. Перейдите в раздел «Параметры магазина» — «Общее» и в самом первом пункте «Включить SSL» нажмите на ссылку для проверки поддержки HTTPS.
  2. При появлении уведомления безопасности подтвердите переход по ссылке.
  3. В пункте «Включить SSL» выберите «Да» и сохраните настройки.
  4. В пункте «Включить SSL на всех страницах» выберите «Да» и еще раз сохраните.

Дополнительно рекомендуется очистить кэш: раздел «Расширенные возможности» — «Производительность» — «Очистка кэша».

Шаг 4. Устранение Mixed Content

Ошибки Mixed Content, то есть ошибки смешанного содержимого, говорят о том, что на сайте, который работает по HTTPS, все еще есть ссылки, которые ведут на HTTP. Это могут быть ссылки как на разделы вашего собственного сайта, так и на сторонние ресурсы. Присутствие смешанного содержимого не только негативно влияет на SEO, но и является проблемой безопасности, так как часть данных оказывается не защищена, несмотря на наличие SSL-сертификата на сайте.

Проверить наличие таких ссылок и ошибок можно:

  • С помощью специальных сервисов, например, JitBit. Сервис выведет список страниц, на которых обнаружено смешанное содержимое.
  • В консоли разработчика в браузере. В Chrome и Firefox ее можно открыть с помощью Ctrl+Shift+J. В поиске введите 'mixed', чтобы отфильтровать нужные ссылки. 

Для устранения смешанного содержимого нет универсального способа, так как разные сайты имеют свои особенности, однако в целом нужно добиться отсутствия ссылок на HTTP в коде вашего сайта.

В Wordpress для этой цели можно использовать специальные плагины, например:

При ручной настройке можно: 

1) Заменить во всех ссылках, где возможно, протокол HTTP на HTTPS, то есть вместо ссылок вида:

http://domain.ru/page/file.jpg

использовать:

https://domain.ru/page/file.jpg

Если ссылка ведет на сторонний ресурс (http://некий-сайт/page/file.jpg), сначала проверьте, что он доступен по HTTPS и ссылка останется рабочей. Если это не так, попробуйте воспользоваться вторым вариантом.

2) Второй вариант — заменить ссылки на относительные вместо абсолютных, то есть вместо ссылок вида:

http://domain.ru/page/page2/file.jpg

использовать ссылки:

/page/page2/file.jpg

Это же касается ссылок на сторонние ресурсы, в них необходимо полностью отбросить указание протокола. То есть вместо ссылок вида:

http://сторонний-сайт/page/page2/file.jpg

нужно указать:

//сторонний-сайт/page/page2/file.jpg

Если ссылка такого вида работает некорректно, а по HTTPS ресурс недоступен, то можно рассмотреть варианты:

  • если это медиа-контент (картинки, видео и пр.) — по возможности загрузить их на сервер TImeweb, в директорию вашего сайта, и после обновить ссылки;
  • найти аналог этого сайта или ресурса и полностью обновить ссылки на данный элемент;
  • не использовать этот файл или скрипт, если есть такая возможность, и полностью удалить его из кода страницы.