Блог по продвижению сайтов Блог по SEO

Переезд магазина Opencart на SSL сертификат или меняем HTTP на HTTPS

Просмотров: 6434

Вчера сидел и убил весь вечер на процедуру, которая должна быть простой и примитивной, но которая нифига не является простой и примитивной. Мне нужно было сделать редирект с http на https для Opencart 2.

Фактически я установил SSL сертификат Opencart и теперь хотел заставить его корректно работать с ним. Причем чтобы сайт был доступен по двум протоколам одновременно.

ssl сертификат opencart

Мне нравится Opencart (все преимущества этого движка), но чтобы докопаться до истины потребовалось столько усилий, что я сто раз спросил сам себя: ну почему Opencart - не WordPress, где подобная проблема даже не проявляется? :facepalm:

Впрочем, у Opencart есть много других преимуществ, поэтому ближе к делу, сейчас расскажу как решал эту задачу подробнее.

Итак, сама задача: переезд с HTTP на HTTPS

Если вы делаете SEO продвижение магазина, то вам придется корректно настроить переезд с HTTP-протокола на HTTPS (зачем вообще нужно https для SEO).

Обычно сам SSL сертификат предоставляется и устанавливается еще хостером. В противном случае придется его покупать отдельно - вот тут я нашел самые низкие цены на SSL сертификаты.

Я всегда выбираю хостеров с бесплатными или условно-бесплатными SSL, которые все эти работы делают за вас - и вам также советую делать, экономит время и деньги :yes: Смотреть хостеров с бесплатными SSL.

Если при вводе https://адрес.домена с сайта уже что-то начинает показываться - значит сертификат куплен и установлен на хостинге - полдела сделано!

Просто еще не настроен как положено.
Поэтому выглядит сайт обычно коряво.
Ведь многие JS скрипты, CSS и картинки не подгружаются.

Примерно вот так:

HTTPS не подгружает на Opencart

Это потому, что в файле config.php (редактируется через FTP - как с ним работать) обычно прописываются пути по умолчанию, откуда нужно тянуть скрипты и картинки, и по умолчанию там прописан обычно HTTP домен.

Читайте также:  Жизнь без SEO - статистика сайтов без оптимизации

Например, вот так:

https-opencart-admin

По логике вещей вроде бы достаточно сделать две простые процедуры:

  1. Поменять второй адрес на HTTPS, то есть define('HTTPS_SERVER', 'https://ваш.домен');
    И поменять два последних адреса аналогично в config.php, который в папке /admin - там две строчки затрагиваются, которые после // HTTPS стоят.
  2. В настройках Opencart во вкладке «Сервер» поставить галочку «Включить SSL».
    И типа всё должно заработать легко и непринужденно.

Но Опенкарт не был бы собой, если бы не преподнёс ряд сюрпризов, и самый главный из них такой:

После включения SSL - HTTPS сайт вообще у меня перестал работать ((

Сделав всё по инструкции, вы вдруг обнаруживаете, что обычная версия сайта стала теперь корявой и фактически не отображается.

То есть включили в админке «Использовать SSL», добавили в конфиг https во второй строке, а в зайдя на https сайт - видите примерно такую ошибку:

Страница недоступна
Сайт выполнил переадресацию слишком много раз.
Удалите файлы cookie..
ERR_TOO_MANY_REDIRECTS

страница недоступна переадресацию слишком много раз

Согласитесь, это совсем не то, что ожидали.

Решение проблем с подключением HTTPS

Есть два пути решения вопроса:

1. ИСПОЛЬЗУЕМ «костыль»

Вы прописываете в config.php (для фронтенда и для админки) везде HTTPS, даже в HTTP (!) секции.

ssl сертификат opencart https

При этом ваш обычный старый http-сайт работать не будет. Но вы делаете с него редирект в htaccess (ниже расскажу как) - и всё пучком.

Метод простой и безотказный, рекомендую для всех, кто ценит своё время.

Но для любителей нелёгких путей предлагаю способ №2, как якобы более правильный с точки зрения SEO.

2. Исправить баг с HTTPS

Чиним баг с SSL сертификатом Opencart с помощью небольшого расширения, качаем отсюда https://opencartforum.com/files/file/3272-seo-fix-https/

Устанавливаем как обычное дополнение из админки.

И очищаем менеджер дополнений + заодно весь кэш (смотрите видео как очистить кэш Ocstore).

Обязательно проверьте, чтобы в настройках магазина Опенкарта во вкладке СЕРВЕР не было включено GZIP-сжатие, при нем данный мод не работает, на момент написания статьи по крайней мере.

Читайте также:  Опенкартфорум «кинул» российских и белорусских участников

И теперь сайт будет доступен как и в обычном HTTP режиме, так и в защищенном HTTPS.

Визуально это можно проверить в режиме инкогнито (CTRL + SHIFT + P в Firefox или CTRL + SHIFT + N в Chrome), чтобы сохраненные браузером настройки не влияли на результат эксперимента. Ну или в другом браузере просто открыть, на котором вы раньше не заходили на сайт.

А также можно проверить в любом инструменте на ответ сервера, например, http://checkmy.ru/

Вводите адрес сайта с http - ответ 200, вводите с https - тоже 200.

ответ сервера с http на opencart

ответ сервера с https на opencart

И если при этом в браузере что в обычном, что в защищенном соединении открывается сайт - значит всё получилось как и планировали :clap:

Редирект с HTTP на HTTPS в Opencart

Теперь вы можете играться с дальнейшей судьбой старого сайта на HTTP как хотите, но долгое время допускать существование двух сайтов не стоит с точки зрения SEO - для поисковиков это ненужный дубль.

В конце концов должен остаться только один. Как у горцев :cool:

Для этого всегда используется один и тот же инструмент: 301 редирект, который явно указывает поисковику, что все страницы сайта HTTP переехали на новый адрес HTTPS, а про старый сайт можно забыть.

Я считаю нормальной практикой - просто сделать редирект 301 сразу после успешного включения SSL сертификата на Opencart и больше не заморачиваться этой рутиной.

Я так делал на 50+ сайтов, никаких массовых падений позиций никогда не видел.

А что скажет Яндекс?

Но если придерживаться официальных рекомендаций от Яндекса, то перед тем, как сделать решающий финишхим и поставить 301 редирект на все страницы, Яндекс обычно рекомендует делать так:

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

ИМХО лишние заморочки, но почему бы и нет? Тем более, что бывают ситуации, что нужен и http-сайт и https одновременно, у меня как раз была такая ситуация.

Читайте также:  Как использовать новый формат Webp на своём сайте

И кроме этого, при включении SSL без костылей в виде тотального прописывания HTTPS в конфигах, у вас появляется возможность следовать рекомендациям Яндекса.

Google этим не заморачивается и просто рекомендует, чтобы добавили новую версию сайта на HTTPS в панель вебмастера Гугл, а со старого сделали редирект.

Так что когда вы решите, что старый сайт на HTTP более не нужен, то делайте редирект с него на новую версию.

Обычно хватает такого кода в начале файла htaccess:

RewriteEngine On
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Или ещё вариант:

RewriteEngine on
RewriteCond %{HTTP:X-SSL-Emu} !on
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Или еще вот так:

RewriteEngine on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

Вообще разных способов сделать 301 редирект - множество.

Они по-разному работают на разных хостингах. Поэтому универсального рецепта просто нет.

Если что-то не сработает, не кидайте помидорами, банально перебирайте разные другие варианты прописать редирект. Трясите хостера, нормальный хостер всегда подскажет, как сделать редирект именно на его серверах. Пишите в комментах ваши решения.

Те варианты, что я привел - проверены на разных толковых хостингах. Если не определились с хостером или планируете съезжать, то почитайте какие хостинги я рекомендую, там эти способы работают на отлично.

После правильного редиректа все внутренние страницы старого HTTP сайта должны вести на аналогичные страницы нового сайта с HTTPS.

Ответ сервера при этом будет 301 кодом:

редирект https opencart ok

Ну и не забудьте после успешного переезда на новый SSL сертификат магазина на Opencart, добавить новые карты сайта с HTTPS перед доменом в robots.txt (если используете там) и в панелях вебмастеров - читайте как добавить сайт в панель Яндекса и в панель Гугл.

Кстати, вот в этой статье я собрал больше информации, как делать правильный opencart редирект.

Полезные цитаты: Сегодня я богат именно благодаря тому, что я сделал в свободное время (Р.Кийосаки)

Блог — Сергея Арсентьева 📈
image
Сергей Арсентьев
Всего материалов на сайте: 239
Активных комментариев: 3 500
Работает онлайн: 10.6 лет
Читателей за это время: 2 465 915
Я в соцсетях —
Фото
Бесплатный видеокурс для начинающих. Что такое фриланс, можно ли на нем зарабатывать и сколько?
Бесплатно Подробнее
Фото
Бесплатная мини книга для тех, кто хочет заказать сайт, но растерялся во множестве CMS и вариантов выбора.
Бесплатно Подробнее
Фото
Пошаговый видеокурс "Как работать в Опенкарт" с уроками по добавлению товаров и статей.
Комментариев 18
  • Иван
    Иван

    Статья отличная!
    Благодарность автору! Всё сразу заработало :yes:

    Комментировать
  • Светлана

    Спасибо за варианты строк для htaccess, я мне подошёл третий вариант, все корректно заработало, до этого после изменения htaccess подобным кодом, найденным в других источниках, а также двумя первыми варианта, все страницы сайта отвечали ERR_TOO_MANY_REDIRECTS. После переноса сайта на новый хостинг это было еще той занозой в заднице :)
    Большое спасибо.

    Комментировать
  • Настя

    Интересует как установить ssl сертификат на сайт opencart

    Комментировать
  • Оля
    Оля

    Просто божественная статья. Все получилось :smile: :yes:

    Комментировать
  • Сергей
    Сергей

    У мене немного другая проблема. После установки сертификата и всех редактирования файлов ,в браузере Гугл хром на ПК пишет " Не защищенно" и не заходит на сайт,а через Мозилу заходите на сайт и горит заветный замок,в чём проблема подскажите?

    Комментировать
    • Сергей Арсентьев

      Это обычная проблема.
      Нажмите CTRL + U увидите исходный код страницы.
      Далее CTRL + F и поищите текст в виде "http:" - то есть где встречается http протокол. Вы наверняка обнаружите, что есть какие-то картинки или скрипты, которые используют ссылку с http а не https
      И уведомление "не защищено" об этом и говорит.

      Проще всего: скачать базу данных на хостинге, затем массово в редакторе типа Notepad+ заменить http: на https: и залить обратно.
      После этого очистить кеш и обновить страницу.
      В этом случае у вас все url будут с https и ошибка исчезнет.

      Если после заливки базы ошибка остается - посмотрите, может какой-то файл в footer или header использует внутри обращение http:
      и поменяйте на https.

      Комментировать
  • Дядёк
    Дядёк

    Перепробовал кучу разных редиректов на хостинге sweb. в Итоге сработал ваш третий вариант:
    RewriteEngine on
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
    Спасибо! :yes:

    Комментировать
  • Олег
    Олег

    Сергей, разобрался я - всё дело в версии Опенкарт. Мы только запускаем интернет-магазин, поэтому есть возможность поэкспериментировать. Когда установили версию 3.0.3.2., то всё разрешилось за 2-3 минуты: и админка и сам магазин стали работать по защищенному протоколу. Остановимся на версии 3.0.3.2. Вам спасибо большое за советы!

    Комментировать
  • Олег
    Олег

    Сергей, разобрался я - всё дело в версии Опенкарт. Мы только запускаем интернет-магазин, поэтому есть возможность поэкспериментировать. Когда установили версию 3.0.3.2., то всё разрешилось за 2-3 минуты: и админка и сам магазин стали работать по защищенному протоколу. Остановимся на версии 3.0.3.2.

    Комментировать
  • Олег
    Олег

    Ничего не помогло, третьи сутки бьюсь :wall: )) Админка защищена, а сам сайт по-прежнему по незащищенному протоколу.. Какие есть еще решения?

    Комментировать
    • Сергей Арсентьев

      Скорее всего где то по http что-то подгружается.
      Не видя сайт вряд ли чем-то помочь можно.

      Что я бы сделал в такой ситуации:
      1) выгрузил sql базу и массово поменял http на https (чтобы исключить картинки)
      2) проверил файлы шаблона, в первую очередь footer и header - чтобы там не было http нигде.
      3) сбросил кеш и должно быть всё ок

      Если нигде нет http - то будет защищенный протокол.

      Комментировать
      • Олег
        Олег

        по второму пункту всё сделал, а первый пункт для меня - темный лес, базу sql нашел..

        Комментировать
  • Максим

    Здравствуйте. Подскажите пожалуйста, что за проблема может быть : перевел сайт на https, но оказывается не все страницы перевелись ?

    Комментировать
    • Сергей Арсентьев

      Добрый день, картинки в описании категорий Opencart не переводятся автоматически. Там надо вручную прописать https вместо http.

      Общее правило поиска подобных проблем:

      1. открываете страницу, где нет полного https
      2. жмете CTRL + U и видите html код
      3. ищите в коде вхождения http:// и смотрите что это - картинка или скрипт какой-то может быть.
      4. меняете по ситуации уже или в программных файлах или в админ панели Opencart старый http: на https.

      В вашем случае просто поменять ссылки внутри панели в описании.
      Как-то так.

      Комментировать
  • Игорь

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

    Комментировать
  • Александр

    Перерыл интернет, два дня убил, перепробовал ...дцать вариантов изменения файла .htaccess, сайт магазина кривой. Пока не скачал эту прогу (сео фикс). Кое как установил. Все заработало. Спасибо. :yes:

    Комментировать
  • Вадим
    Вадим

    Перевел opencart 2.3 на https и началось: яндекс ругается на ошибки в карте сайта, гугл тупо морду от него воротит "ничего нету, никакой карты", хотя на http они карту кушали за милую душу

    Комментировать
    • Сергей Арсентьев

      Переезд на https в панели вебмастера яндекса нормально прошел? Обычно на это неделя требуется.

      Комментировать
Смотреть еще комментарии
Добавить свой комментарий