Перевод сайта на HTTPS

пошаговая инструкция · Около часа

← Все инструкции

1. Что произошло

Адрес начинается с http://, данные между посетителем и сайтом передаются открытым текстом.

2. Почему это важно

Браузеры помечают сайт как «небезопасный», формы и пароли под угрозой, в поиске такой сайт ниже. После исправления: Значок замка в браузере, больше доверия и лучше позиции.

3. На каких страницах обнаружено

Главная страница: проверяется, отдаётся ли сайт по защищённому адресу и ведёт ли адрес с http на https.

Чтобы увидеть адреса на вашем сайте, откройте инструкцию из отчёта или добавьте домен в адрес: /fix/https/ваш-сайт.ru.

4. Как исправить

Для Joomla

  1. Система → Общие настройки → Сервер → «Принудительно использовать HTTPS» → «Весь сайт». Затем в «Настройки сайта» проверьте поле «Адрес сайта» в параметрах SEF и очистите кэш.

Общее для любого сайта

  1. Убедитесь, что сертификат выпущен (инструкция «Сертификат SSL»).
  2. Настройте постоянный редирект (301) со всех http-адресов на https — одной переадресацией, без цепочки.
  3. Замените внутри сайта все ссылки вида http://example.com на https://example.com (меню, картинки, скрипты, canonical, sitemap.xml).
  4. Добавьте https-версию сайта в Яндекс.Вебмастер и Google Search Console, отправьте новый sitemap.xml и в Вебмастере проверьте «Переезд сайта».

5. Готовый код

Замените example.com на свой домен. Перед правкой конфигурации сделайте резервную копию файла.

WordPress

Адреса сайта в wp-config.php
define('WP_HOME', 'https://example.com');
define('WP_SITEURL', 'https://example.com');
define('FORCE_SSL_ADMIN', true);
Замена адресов в базе (WP-CLI)
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-run
# если результат устраивает — тот же запуск без --dry-run
wp search-replace 'http://example.com' 'https://example.com' --all-tables

nginx

Редирект с http на https (nginx)
server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://example.com$request_uri;
}

Apache

Редирект с http на https (.htaccess)
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

6. Как проверить результат

  1. Команда из блока «Как проверить» должна показать конечный адрес https://… и код 200, число переходов — не больше 1–2.
  2. Откройте несколько страниц сайта: замок должен быть закрытым, без значка «небезопасно».
  3. Нажмите «Перепроверить сайт».
Должен быть один переход 301 на https
curl -sIL -o /dev/null -w '%{url_effective} %{http_code} redirects=%{num_redirects}\n' http://example.com/

Чтобы перепроверить сайт, откройте отчёт и нажмите «Проверить заново».