Notice: Trying to access array offset on value of type int in /home/c/cl104514/tom.tw1.ru/public_html/catalog/controller/extension/vita_news/news.php on line 64Notice: Trying to access array offset on value of type int in /home/c/cl104514/tom.tw1.ru/public_html/catalog/controller/extension/vita_news/news.php on line 68 SSL для OpenCart: полное руководство по переходу на HTTPS
Author: Администрация — 2018-03-07

SSL для OpenCart

Полное руководство по переходу на HTTPS для OpenCart всех версий и сборок: сертификат, config.php, 301-редиректы, кеш, вебмастеры и типовые ошибки.

Подходит для OpenCart 2.x / 3.x, ocStore и LiveStore

Резервное копирование

Меры предосторожности перед началом работы.

Важно! Перед началом любых изменений создайте резервную копию файлов и базы данных сайта.

Получение SSL-сертификата

Для перехода на HTTPS необходим SSL-сертификат. Рекомендуемые провайдеры:

Получение SSL-сертификата

Провайдеры сертификатов для перехода на HTTPS.

Let's Encrypt

Бесплатный сертификат, доступен в панели большинства хостингов.

Comodo

Бесплатный сертификат на 90 дней, с продлением.

Платные CA

DigiCert, Entrust, GeoTrust, GlobalSign, Symantec, SSL.com, Thawte, Trustwave, SwissSign.

Рекомендация: Let's Encrypt предоставляет бесплатные Wildcard-сертификаты для основного домена (domain.tld) и поддоменов (*.domain.tld).

Установка сертификата

Активация SSL на сервере:

  1. Установите сертификат на сервер согласно документации (Apache, Nginx)
  2. Активируйте сертификат через панель управления хостинга
  3. Обратитесь в техподдержку хостинга для установки

Настройка OpenCart

Внимание: во всех примерах ниже замените site.ru на ваш домен.

3.1. Настройка config.php (корневой каталог)

config.php
define('HTTP_SERVER', 'http://site.ru/');
define('HTTPS_SERVER', 'http://site.ru/');

// Стало:
define('HTTP_SERVER', 'https://site.ru/');
define('HTTPS_SERVER', 'https://site.ru/');

config.php в папке /admin

admin/config.php
define('HTTP_SERVER', 'http://site.ru/admin/');
define('HTTP_CATALOG', 'http://site.ru/');
define('HTTPS_SERVER', 'http://site.ru/admin/');
define('HTTPS_CATALOG', 'http://site.ru/');

// Стало:
define('HTTP_SERVER', 'https://site.ru/admin/');
define('HTTP_CATALOG', 'https://site.ru/');
define('HTTPS_SERVER', 'https://site.ru/admin/');
define('HTTPS_CATALOG', 'https://site.ru/');

3.2. Настройка в админ-панели

Система → Настройки → Редактировать → вкладка «Сервер» → Использовать SSL — выберите Да.

3.3. Обновление robots.txt

  • Если sitemap не фид, добавьте: Sitemap: https://mysite.com/sitemap.xml
  • Если sitemap — фид, предоставьте новый HTTPS-фид

Настройка 301 редиректов

Перенаправление с HTTP на HTTPS.

Важно: редиректы добавляйте в .htaccess после RewriteBase / или RewriteEngine On. Проверьте, что mod_rewrite включён.

Универсальный редирект (основной домен)

.htaccess
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(www\.)?(osnovnoy_domen\.ru)
RewriteRule ^ https://%2%{REQUEST_URI} [R=301,L]

Замените osnovnoy_domen.ru на ваш домен.

Вариант 1: с www на без www

.htaccess — без www
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTP:X-HTTPS} !1 [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%1%{REQUEST_URI} [R=301,L]

Вариант 2: без www на с www

.htaccess — с www
RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP:X-Forwarded-Proto} =http [OR]
RewriteCond %{HTTP:X-Forwarded-Proto} =""
RewriteCond %{HTTP:X-HTTPS} !1 [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Готовые решения для хостингов

.htaccess — универсальный
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

Timeweb: включите редирект HTTP → HTTPS в панели управления. Либо вручную:

.htaccess — Timeweb
RewriteCond %{HTTP:SSL} !=1 [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Ukraine.com.ua: при проблемах обратитесь в поддержку хостинга — конфигурация сложная.

.htaccess — Ukraine.com.ua
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP:PORT} !^443$
RewriteCond %{REQUEST_URI} !robots\.txt
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Masterhost.ru:

.htaccess — Masterhost
RewriteCond %{ENV:HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NC,R=301,L]

Nginx + Apache (эмуляция SSL):

.htaccess — Nginx+Apache
SetEnvIf X-SSL-Emu on HTTPS
RewriteCond %{HTTP:X-SSL-Emu} !on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP_HOST} !^www\.(.*)$ [NC]
RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
.htaccess — вариант
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]

RewriteCond %{HTTP:X-Forwarded-Protocol} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
.htaccess — вариант
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Beget.ru:

.htaccess — Beget
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Очистка кэша

Обновление временных файлов:

  • Очистите кэш OpenCart: удалите содержимое system/storage/cache/
  • Очистите кэш модификаторов: удалите содержимое system/storage/modification/

Проверка работы

Тестирование редиректов и функциональности.

6.1. Если редирект с www на без www

  • HTTP с WWW → HTTPS без WWW
  • HTTP без WWW → HTTPS без WWW
  • HTTPS с WWW → HTTPS без WWW

6.2. Если редирект без www на с www

  • HTTP с WWW → HTTPS с WWW
  • HTTP без WWW → HTTPS с WWW
  • HTTPS без WWW → HTTPS с WWW

6.3. Проверка статических файлов

Проверьте, как сервер отдаёт статические файлы (например, фото товаров) по HTTPS.

6.4. Проверка редиректа

Убедитесь, что используется именно 301-й редирект (не 302). Проверьте через WebPageTest, Screaming Frog или в браузере (F12).

6.5. Проверка ссылок

Проверьте сайт на наличие HTTP-ссылок в статьях и описаниях товаров. Замените на HTTPS или сделайте относительными.

Добавление в вебмастеры

Регистрация HTTPS-версии сайта в сервисах:

Добавление в вебмастеры

Регистрация HTTPS-версии сайта в сервисах.

Яндекс Вебмастер

Mail.ru Вебмастер

Решение проблем

Устранение возможных ошибок:

  • 404 ошибки: проверьте настройки сервера и DocumentRoot
  • HTTP-изображения: проверьте настройки CDN и ссылки в базе данных
  • Mixed Content: все внешние ресурсы (скрипты, стили, шрифты, iframe) должны быть по HTTPS
  • Ограничения хостинга: на виртуальном хостинге возможны ограничения — рассмотрите VPS

Важно: все внешние ресурсы должны загружаться по HTTPS, иначе возникнут ошибки Mixed Content.

Полезные инструменты

Сервисы для проверки и мониторинга SSL:

Полезные инструменты

Сервисы для проверки и мониторинга SSL.

SSL Labs

Проверка SSL-сертификата и конфигурации: Проверить SSL.

WebPageTest

Проверка редиректов и производительности: Тестировать.

HTTP/2 Test

Проверка поддержки HTTP/2 и ALPN: Проверить HTTP/2.

Host Tracker

Мониторинг доступности сайта: Мониторить.

SSLShopper

Проверка установленного сертификата: Проверить сертификат.

Comments