Блог Сергея Арсентьева

Создание и продвижение сайтов с нуля.
Только реальные способы заработка в сети.
Проверено на личном опыте.

Правильный редирект в магазине Опенкарт (Opencart / OcStore 2.х)

Обычный редирект в магазинах на Opencart CMS не срабатывает и выдает ошибку Internal Server Error (500). Решается эта задача с помощью другого синтаксиса Redirect 301.Все началось с того, что меня один клиент по продвижению попросил сделать редирект в его магазине Opencart 2.1.

Изменились ссылки на статьи, о магазине, товары и категории.

А я согласился, совсем забыв, что в магазинах Opencart эти редиректы делаются через одно место, стандартный синтаксис с Redirect 301 не работает!

В итоге вместо нескольких минут задача заняла у меня целый день, включая поиск в интернете правильного решения, тестирования и создание своего файлика XLS, чтобы больше вручную не делать все эти редиректы в Опернкарте.

Делюсь найденным решением с вами.

Прописываем правильный редирект в Opencart вручную

Итак, открываем файл .htaccess, он находится в корне сайта, для этого понадобится доступ по FTP (может пригодится как зайти по FTP на сайт).

И где-нибудь в начале файл после директивы RewriteEngine On вставляем редиректы.

Прежде всего, еще раз напомню, что стандартный редирект вида:

Redirect 301 старый адрес http://новый адрес

банально не работает и выдает ошибку.

Чтобы победить его в .htaccess нужно прописать другую конструкцию:

RewriteCond %{QUERY_STRING} ^_route_=адрес_старой_страницы.html$
RewriteRule ^(.*)$ http://ваш_домен.ru/новой_страницы/? [R=301,L]

Проверил в разных вариантах - все работает отлично.
Спасибо за решение неизвестному автору.

Автоматизировать редирект Opencart

Мне пришло в голову, что млин, каждый раз вручную вставлять правильные адреса в эти 2 строчки довольно утомительно.

И поэтому если у вас есть список старых URL-адресов и новых, то задача сделать из них редирект - вопрос нескольких формул в Excel.

Вот что получилось:

В результате можно сразу загнать в файл весь список старых адресов и напротив них - новые, и получить готовый редирект для Opencart и Ocstore.

Качайте файл с моего сервера.

Скачать бесплатно

Прямо сейчас вы можете скачать нужный файл с моего сервера - это просто и бесплатно. Достаточно кликнуть на любой значок соцсети, в которой вы, разумеется, имеете аккаунт и оставить сообщение в выбранной соцсети, после чего вам откроется скрытое содержимое.

Если после клика на социальный замок не показывается содержимое (такое бывает иногда в зависимости от браузера), то есть такие варианты:

  • Попробуйте другую соцсеть или зайти из другого браузера
  • Оставьте страницу подождать какое-то время (в новой полной версии соцзамка есть таймер обратного отсчета, он в углу показывает оставшееся время до самооткрытия).
  • Заходите в спецархив - я тут выкладываю ссылки на все файлы (https://moytop.com/about-archive-moytop)

Массовый редирект на новый домен

Ну и в заключении приведу простой код для массового редиректа всех страниц в магазине при переезде на новый домен или как в данном случае - когда хочется чтобы сайт был доступен с разных доменов, например, GrillKraft.ru и GrillCraft.ru.

Конечно, лучше сразу правильно подбирать домен для магазина, но если у вас уже есть необходимость в нескольких именах, то с помощью 301 редиректа вы добьетесь того, что со всех дублей будет загружаться только основной домен сайта.

RewriteEngine On
RewriteBase /
#RewriteCond %{HTTP_HOST} ^(www\.)?xn--80afpie2adrr0f\.xn--p1ai$ [NC,OR] RewriteCond %{HTTP_HOST} ^(www\.)?grillcraft\.ru$ [NC] RewriteRule ^(.*)$ http://grillkraft.ru/$1 [R=301,L]

Там где # - это строка значит закомментирована.
Она здесь, чтобы показать как делать редирект с кириллистического домена магазина.

Добавляйте эту конструкцию в .htaccess файл старого сайта и у вас будет происходить 301 редирект в вашем магазине со всех страниц старого домена на новый.

Автор блога
“Измени свои привычки, и изменится твоя жизнь..”
Специалист по созданию и продвижению сайтов (SEO и реклама), фрилансер с многолетним опытом.
Статистика блога
  • Всего материалов на сайте: 189
  • Активных комментариев: 2 709
  • Работает онлайн: 5.5 лет
  • Читателей за это время: 1 457 033

Было интересно - жми на звезды:



Комментарии на блоге
Комментариев | (18)
  • Дмитрий

    Спасибо Вам огромное! Два дня лапатил этот 301 и тут всё получилось!

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

    Спасибо! Метод помог настроить редиректы, долго мучался. :yes:

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

    Отлично! То что надо... Спасибо огромное!

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

    Спасибо! Возникла такая ситуация, что 301 редирект с одной страницы сделал. Затем хотел сделать еще один, вставил строки в файл и появилась ошибка, которая не позволяет зайти на сайт. Почему так можете подсказать?

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

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

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

    А мне помогло вот так:

    RewriteCond %{QUERY_STRING} ^route=information/contact$
    RewriteRule ^(.*)$ contacts? [R=301,NC,L]

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

    Спасибо помогло, но не могу средиректить страницы типа "/index.php?route=product/category&path=33"

    Что можно с этим сделать?

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

      я бы вот так попробовал:

      ====================

      RewriteCond %{QUERY_STRING} category&path=33$
      RewriteRule ^(.*)$ https://moytop.com/? [R=301,L]

      ====================

      только свой адрес вместо moytop.com не забудьте.
      у меня на магазине такая связка работает, проверил сейчас.
      если и у вас получится, то хорошо.

      естественно, редиректы должны стоять после:
      RewriteBase /

      но перед системными редиректами, которые там идут стандартно в любом Опенкарте.

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

        Все работает, еще раз спасибо !

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

        Огромное спасибо! Мне это помогло!

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

    А можете подсказать, как прописать редирект чтобы перправляло с http://www.goldentimenn.ru/man/ на https://lux33.ru/mens/.
    Все конструкции перепробовал - ни одна корректно не работает.

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

      Если так не работает:
      RewriteCond %{QUERY_STRING} ^_route_=man/$
      RewriteRule ^(.*)$ https://lux33.ru/mens/? [R=301,L]
      то не подскажу... Может кто из читателей сталкивался.

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

    А если у тебя 10 000 позиций со старого сайта, где изменились url ? Мы апачь не повесим таким способом ?

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

      Я бы не стал 10000 позиций вручную менять через список 301 редиректов.
      Обычно ведь редирект - это смена каких-то общих родительских URL, а не всех URL товаров, например:

      Было: https://site.com/category1/statya.html
      Стало: https://newsite.ru/category8901/statya.html

      То есть URL конкретных конечных страниц редко меняются.
      В этом случае имеет смысл заказать написание или скрипта редиректов или формулы для редиректа с учетом специфики изменений.
      На биржах фриланса можно найти профессионалов по администрированию серверов, они напишут относительно недорого.

      Если же у вас поменялись все URL, например:
      Было: https://site.com/category1/statya.html
      Стало: https://newsite.ru/category8901/novye-statii.html

      И таких страниц очень много, то IMHO проще забить на это в принципе.
      Сделать редирект только основных категорий и всё.
      Поисковик через пару недель сам определит новые URL, в поиске обычно они не проседают, так как это низкочастотники.

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

        Да, но у меня разбивается на 2 сайта, поэтому приходится делать карту редиректов.
        Я сделал по другому.
        Старые адреса и новые записал в базу данных по соответвию.
        Оттуда запросом забирал и перенаправлял php редиректом. Пришлось поменять немного контроллер.

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

    RewriteCond %{QUERY_STRING} ^route=common/home$
    RewriteRule ^(.*)$ ? [R=301,NC,L]

    мне вот так помого

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

    Добрый день! Спасибо за помощь, тоже помогло! Подскажите, если мне надо сделать 301 редирект таким способом около 500 позиций, это будет нормально? Я имею ввиду, не будет ли каких-то негативных последствий для сайта, например он станет медленнее загружаться или еще что-то подобное?

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

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

      Комментировать
Добавить свой комментарий
Подробнее в Установки и настройки, Установки и настройки
Google опять пугает владельцев сайта: на этот раз SSL

Уже не в первый раз мировой гигант Google баламутит спокойствие в IT-сообществе. На этот раз он обещает придушить те сайты,...

Бесплатный SSL сертификат для сайта

Бесплатный сертификат SSL для своего сайта вполне реально можно получить, немного порыскав по интернету в поисках халявы.

Закрыть