Перевод сайта на HTTPS и устранение Mixed Content
На сегодняшний день использование протокола HTTPS на сайте необходимо не только для защиты данных, но и для поддержания его позиций в выдаче — поисковые системы учитывают наличие SSL в качестве фактора ранжирования. Чтобы перевести сайт на HTTPS вам необходимо установить SSL-сертификат, а после провести дополнительные настройки, чтобы все работало корректно.
Если вы не хотите заниматься настройкой самостоятельно, рекомендуем вам сертификат SSL Timeweb Pro — при его заказе все необходимые работы по установке и настройке SSL, а также по настройке вашего сайта выполнят наши специалисты. Вы также можете заказать отдельную услугу по настройке сайта при заказе сертификата Let's Encrypt.
- Шаг 1. SSL-сертификат
- Шаг 2. Перенаправление на HTTPS
- Шаг 3. Дополнительные настройки для CMS
- Шаг 4. Устранение Mixed Content
Шаг 1. SSL-сертификат
В Timeweb вы можете заказать как сертификаты GlobalSign, так и бесплатный Let's Encrypt. Подробнее о типах сертификатов, их заказе и установке см. в разделе SSL-сертификаты.
После того, как сертификат установлен, потребуется выполнить определенные настройки на сайте и устранить Mixed Content.
Шаг 2. Перенаправление на HTTPS
Включить перенаправление на протокол HTTPS можно через панель управления или с помощью директив в файле .htaccess.
В панели управления:
- Перейдите в раздел «Сайты» — «Мои сайты» и нажмите на значок шестеренки у нужного сайта.
- В открывшемся окне настроек включите опцию «Использовать безопасное соединение 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 (по крайней мере, частично).
При ручной настройке:
- В админ-панели сайта перейдите в раздел «Настройки» — «Общие».
- Укажите протокол HTTPS в полях «Адрес WordPress» и «Адрес сайта», то есть замените
http://domain.ru
наhttps://domain.ru
. - В конфигурационный файл
wp-config.php
добавьте строку:
define('FORCE_SSL_ADMIN', true);
Joomla
- В админ-панели сайта перейдите в раздел «Система» — «Общие настройки» — вкладка «Сервер».
- В пункте «Включить SSL» выберите «Весь сайт» и сохраните изменения.
- В конфигурационном файле
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
- В админ-панели сайта перейдите в раздел «Настройки» — «Системные настройки» — вкладка «Сайт».
- Найдите параметр «Тип сервера» (можно искать по ключу
server_protocol
) и замените HTTP на HTTPS. - Далее найдите параметр «Схема URL» (ключ
link_tag_scheme
) и замените значение -1 на 1.
Если в работе сайта возникают проблемы, попробуйте дополнительно внести следующие изменения в конфигурационный файл config.inc.php
:
Строку:
$isSecureRequest = false;
Заменить на:
$isSecureRequest = true;
Строку:
$url_scheme= $isSecureRequest? 'https://': 'http://';
Заменить на:
$url_scheme= 'https://';
OpenCart
- В админ-панели сайта перейдите в раздел «Система» — «Настройки».
- На вкладке «Сервер» в пункте «Использовать SSL» выберите «Да» и сохраните изменения.
- В конфигурационном файле
/public_html/config.php
в блоках HTTP и HTTPS укажите URL вашего сайта с протоколом HTTPS:
// HTTP
define('HTTP_SERVER', 'https://domain.ru/');
// HTTPS
define('HTTPS_SERVER', 'https://domain.ru/');
- В конфигурационном файле
/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
- Перейдите в раздел «Параметры магазина» — «Общее» и в самом первом пункте «Включить SSL» нажмите на ссылку для проверки поддержки HTTPS.
- При появлении уведомления безопасности подтвердите переход по ссылке.
- В пункте «Включить SSL» выберите «Да» и сохраните настройки.
- В пункте «Включить 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, в директорию вашего сайта, и после обновить ссылки;
- найти аналог этого сайта или ресурса и полностью обновить ссылки на данный элемент;
- не использовать этот файл или скрипт, если есть такая возможность, и полностью удалить его из кода страницы.