Услуги Создание магазина Доработка Интеграция 1С О компании FAQ Блог Кейсы Отзывы Контакты
А
Автор статьи

301 редирект в OpenCart через .htaccess: примеры и проверка

редирект в OpenCart через .htaccess — это способ навсегда перенаправить старый URL на новый. Он нужен при смене адресов товаров и категорий, переходе на HTTPS, склейке домена с www и без, а также после изменения структуры каталога. Правила размещаются в корневом файле .htaccess до стандартных правил SEO URL OpenCart, чтобы срабатывали раньше маршрутизации CMS.

Из практики: реклама для магазина на OpenCart имеет свою специфику. Рассказываю, что работает в 2026.

При работе с редиректами в OpenCart важно помнить: OpenCart хорошо подходит для SEO-переездов — у владельца есть полный доступ к файлам, URL-структуре, config.php, модификаторам и логам. Поэтому редиректы настраиваются прозрачно, без ограничений закрытых конструкторов. Но за 17 лет работы с OpenCart я встречал десятки проектов, где неправильно настроенные редиректы приводили к потерям трафика — и в большинстве случаев причина была в одной и той же ошибке.

Когда нужен редирект в OpenCart

Ситуация Что редиректить Зачем это нужно
Изменилась ссылка товара или категории Старый URL на новый URL Сохранить позиции, трафик и внешние ссылки
Переход на HTTPS http:// на https:// Убрать небезопасную версию сайта
Склейка домена www на без www или наоборот Не плодить дубли страниц
Переезд на новую структуру каталога Старые разделы на актуальные посадочные Сохранить SEO при переработке магазина
Удален товар Старый товар на категорию, аналог или замену Не отдавать пользователю и поиску тупиковую страницу

Где размещать правила редиректа в .htaccess OpenCart

В типовом .htaccess OpenCart строка RewriteEngine On уже есть. Новые правила редиректа лучше ставить после неё, но до стандартного блока, который направляет SEO URL в index.php. Так редирект сработает раньше маршрутизации OpenCart и не будет мешать ЧПУ.

RewriteEngine On# Далее идут стандартные правила OpenCart для SEO URLRewriteBase /RewriteRule ^sitemap.xml$ index.php?route=extension/feed/google_sitemap [L]RewriteRule ^googlebase.xml$ index.php?route=extension/feed/google_base [L]RewriteRule ^system/storage/(.*) index.php?route=error/not_found [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !.*.(ico|gif|jpg|jpeg|png|js|css)RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Если в вашем файле строка RewriteEngine On уже есть — копируйте примеры кода без неё и вставляйте после неё в вашем файле. Добавлять эту строку повторно не нужно.

Готовые примеры редиректов для OpenCart

Редирект старой страницы на новую

RewriteRule ^old-page-url/?$ /new-page-url/ [L,R=301]

Этот вариант подходит для одиночных страниц. Важно: в OpenCart лучше использовать RewriteRule вместо Redirect 301, потому что Redirect работает с полными путями и может конфликтовать со стандартной маршрутизацией CMS. Если редиректов много, ведите отдельную карту соответствий старых и новых URL, чтобы не получить цепочки и противоречивые правила.

Редирект с www на без www

RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]

Замените example.com на ваш домен. Это правило направляет все запросы с www на основную версию без www по HTTPS.

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

RewriteCond %{HTTPS} offRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Если одновременно склеиваете HTTP/HTTPS и www/без www, проверьте, чтобы итоговый путь был один: например, все варианты должны вести на https://example.com/, а не проходить через несколько промежуточных адресов.

Редирект удалённого товара

RewriteRule ^old-product/?$ /category/similar-product/ [L,R=301]

Для удалённых товаров лучше вести на релевантную категорию, близкий аналог или подборку замен — а не на главную страницу. Редирект на главную часто выглядит нерелевантно и может хуже обрабатываться поисковыми системами.

Критически важно: config.php и домен

При редиректе с www на без www или смене протокола необходимо обновить домен в файлах config.php и admin/config.php. Домен в конфигах должен совпадать с основной версией сайта.

Если в конфиге указан http://www.example.com/, а в .htaccess вы редиректите на https://example.com/, могут появиться лишние переходы, проблемы с админкой, cookie, изображениями и смешанным контентом. По практике, эта проблема встречается в 3 из 10 проектов, где владелец меняет домен или протокол без синхронизации конфигов.

// HTTPdefine('HTTP_SERVER', 'http://example.com/');define('HTTP_CATALOG', 'http://example.com/');// HTTPSdefine('HTTPS_SERVER', 'https://example.com/');define('HTTPS_CATALOG', 'https://example.com/');

Если сайт использует SSL-сертификат и работает по HTTPS, адреса должны начинаться с https://, а не с http://.

Как проверить редирект

  • Откройте старый URL в браузере и убедитесь, что он сразу ведёт на нужную страницу.
  • Проверьте код ответа через curl -I: старый URL должен отдавать 301, итоговая страница — 200.
  • Убедитесь, что нет цепочки из нескольких редиректов: HTTP → HTTPS → www → без www → новая страница.
  • Проверьте корзину, оформление заказа, личный кабинет и админку OpenCart после изменения домена или протокола.
  • После массовых редиректов обновите sitemap и проверьте ошибки обхода в Яндекс.Вебмастере и Google Search Console.

Частые ошибки при редиректах в OpenCart

  • Правила добавлены ниже стандартной маршрутизации OpenCart и не срабатывают.
  • В config.php остался старый домен или протокол.
  • Используется временный редирект 302 вместо постоянного 301.
  • Создана петля редиректов из-за конфликтующих правил www/без www или HTTP/HTTPS.
  • Старые товары редиректят на главную, хотя лучше вести на релевантную категорию, аналог или замену.

С SEO URL в OpenCart отдельная история. Штатный seo_url плодит дубли: один и тот же товар может быть доступен по /product/123 и /category/product-

name. Проблема решается через seo_pro — но его настройка нетривиальная, и при обновлениях движка модификатор может отвалиться. Я предпочитаю править .htaccess напрямую и закрывать дубли в robots.txt.

Лично я сталкивался с ситуациями, когда после установки «лёгкого» модуля TTFB вырастал с 50 мс до 800 мс. Причина — кривой OCMOD-

модификатор, который дёргал SQL-запросы без индексов. OpenCart этим грешит: модули из неофициальных источников часто не оптимизированы. Лечится аудитом запросов через slow-query-log и рефакторингом oc_product_to_category.

С MySQL в OpenCart вечная боль — таблица oc_product_to_category при каталоге от 10 000 товаров начинает тормозить. Без индекса по product_id и category_id выборка фильтра может длиться 2-

3 секунды. Я всегда добавляю составной индекс, плюс включаю Redis для кэширования — это снижает TTFB в 5-10 раз.

С SEO URL в OpenCart отдельная история. Штатный seo_url плодит дубли: один и тот же товар может быть доступен по /product/123 и /category/product-

name. Проблема решается через seo_pro — но его настройка нетривиальная, и при обновлениях движка модификатор может отвалиться. Я предпочитаю править .htaccess напрямую и закрывать дубли в robots.txt.

OCMOD — палка о двух концах. С одной стороны, позволяет править файлы без взлома ядра. С другой — десять модификаторов от разных авторов гарантированно конфликтуют. Особенно если один правит catalog/controller/product/category.php,

а другой пытается расширить его функционал. Порядок загрузки OCMOD имеет значение, но документация об этом молчит.

FAQ: редиректы в OpenCart

Где находится .htaccess в OpenCart?

Файл .htaccess находится в корневой папке сайта OpenCart. Обычно рядом с ним лежат index.php, config.php, папки catalog, admin и system. Если файла нет, проверьте, не скрывает ли его файловый менеджер — по умолчанию many panels скрывают файлы, начинающиеся с точки.

Куда вставлять редирект в .htaccess OpenCart?

Правило ставят после RewriteEngine On и до стандартных правил SEO URL OpenCart. Так редирект срабатывает до передачи запроса в index.php и не конфликтует с маршрутизацией ЧПУ.

Что лучше: редирект через .htaccess или модуль OpenCart?

Для домена, HTTPS и базовых технических редиректов лучше использовать . Всё просто. htaccess — это быстрее и надёжнее. Для большого списка товарных и категорийных редиректов удобнее модуль или отдельная таблица соответствий, чтобы не перегружать файл правилами. При 100+ правилах .htaccess может начать замедлять работу сервера.

Можно ли удалённый товар редиректить на главную страницу?

Лучше не делать так массово. Без лишних слов. Для SEO и пользователя полезнее вести старый товар на близкий аналог, категорию или подборку замен. Редирект на главную часто выглядит нерелевантно и может хуже обрабатываться поисковыми системами. Я в своей практике рекомендую всегда искать максимально релевантную замену.

Как проверить, что редирект работает правильно?

Используйте команду curl -I старый-url — она покажет HTTP-код ответа. Должен быть 301 Moved Permanently. Также проверьте через браузерную панель разработчика вкладку Network: статус 301, затем 200 на целевой странице. Важно убедиться, что нет цепочки редиректов — каждый переход добавляет задержку для пользователя и поискового робота.


Если настройка редиректов кажется сложной или вы столкнулись с проблемами — наша техническая поддержка поможет настроить всё правильно и проверить результат.

Читайте также

Как настроить HTTPS для OpenCart и избежать смешанного контента

Canonical в OpenCart: как настроить правильно

Дубли страниц в OpenCart: откуда берутся и как их убрать

SEO-настройка OpenCart: базовый чек-лист

Что проверить перед запуском интернет-магазина на OpenCart

Из практики. При настройке 301-редиректов в OpenCart типичная ошибка — забывают включить mod_rewrite в настройках и прописать правила в .htaccess. На одном проекте клиент настроил SEO URL, но страницы товаров открывались с 404 — оказалось, опция «Use SEO URLs» в админке не была включена. После включения и создания .htaccess с RewriteRule всё заработало.

Как не надо. Не используйте meta-редиректы (обновление через ) вместо 301 — они не передают вес ссылки и плохо индексируются. Всегда используйте серверные 301 редиректы через .htaccess (Apache) или конфигурацию Nginx. И обязательно проверяйте цепочки редиректов — они не должны содержать циклов и промежуточных 302.

Я занимаюсь разработкой на OpenCart с 2009 года, запустил больше 150 проектов. Через мои руки прошли магазины от маленьких витрин до каталогов на 50 000 товаров. Знаю CMS вдоль и поперёк: slow-

логи MySQL, конфликты OCMOD-модификаторов, грабли с SEO URL. Если у вас есть вопрос — пишите, подскажу.

Рекомендации из практики

Как лучше: После настройки 301 редиректа проверьте его через httpstatus.io — редирект должен быть 301 (постоянный). Если показывает 302 или 200 — настройка неверна. По практике, неправильный тип редиректа — частая причина потери трафика после изменения структуры сайта.

Как не делать: Не делайте цепочек редиректов A→B→C. Каждый редирект теряет часть веса ссылки. Максимум 1 редирект между старым и новым URL.

Кейс из практики: После переноса каталога настроили цепочку из 2 редиректов. Через месяц заметили падение трафика — Яндекс передавал только часть веса. Объединили в один прямой редирект — трафик восстановился.

Нужна помощь — закажите технический аудит: проверим и настроим.

← Предыдущая Микроразметка для сайта: подробное описание Следующая → Nginx для SEO URL в OpenCart: настройка ЧПУ и try_files

Комментарии (0)

Пока нет комментариев. Будьте первым!

Оставить комментарий

Ваш комментарий появится после проверки модератором.