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

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

Редирект с www на без www в OpenCart на Nginx: коротко

Настроить 301-редирект с www на домен без www для OpenCart на Nginx нужно в двух местах: в конфигурационных файлах OpenCart (config.php и admin/config.php) пропишите канонический домен, а в Nginx настройте permanent redirect со всех лишних вариантов на основной. За 17 лет работы с OpenCart я рекомендую выбирать один HTTPS-домен без www — например https://example.com/ — и перенаправлять на него все остальные.

Из практики: правильная настройка сервера часто даёт больше прироста скорости, чем любой модуль. В статье — что я проверяю в первую очередь.

Такая склейка важна для SEO: Google, Яндекс и AI-поиск должны видеть одну основную версию страниц, а не набор дублей http://, https://, www и без www. Без редиректа поисковые системы дробят вес ссылок между версиями, а AI-агенты могут заходить на разные варианты и получать разные данные о магазине.

Важно: домен в OpenCart должен совпадать с канонической версией в Nginx. Несовпадение приводит к проблемам с корзиной, авторизацией, cookie и mixed content.

Что выбрать: www или без www

ВариантКогда подходитЧто важно для OpenCart
Без wwwЧаще всего для современных магазинов и короткого доменаУказать https://example.com/ в обоих config-файлах
С wwwЕсли бренд, реклама или старая индексация уже завязаны на wwwУказать https://www.example.com/ и редиректить без www на www
Обе версии без редиректаНе рекомендуетсяПоявляются дубли URL, путаница с cookie и SEO-сигналами

По практике, в 8 из 10 новых проектов на OpenCart мы используем домен без www. Это проще, короче и современнее. Но если у вас уже раскрученный бренд с www — не стоит менять без веской причины.

Пример Nginx: редирект www → без www и HTTPS

Пример ниже делает канонической версию https://example.com/. Все запросы на http://example.com, http://www.example.com и https://www.example.com уходят на домен без www.

server {    listen 80;    server_name example.com www.example.com;    return 301 https://example.com$request_uri;}server {    listen 443 ssl http2;    server_name www.example.com;    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;    return 301 https://example.com$request_uri;}server {    listen 443 ssl http2;    server_name example.com;    root /var/www/example.com;    index index.php index.html;    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;    location / {        try_files $uri $uri/ /index.php?_route_=$uri&$args;    }    location ~ .php$ {        include snippets/fastcgi-php.conf;        fastcgi_pass unix:/run/php/php8.2-fpm.sock;    }}

Не используйте $scheme://example.com$request_uri, если одновременно настраиваете HTTPS. Такая запись может сохранить HTTP и создать лишний шаг. Лучше явно указывать итоговый канонический адрес: https://example.com$request_uri.

Ключевое правило: редирект со всех вариантов домена должен происходить за один HTTP-шаг. Цепочка из двух-трех редиректов замедляет загрузку страниц и может негативно сказываться на индексации.

Если нужно редиректить без www на www

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

server {    listen 80;    server_name example.com www.example.com;    return 301 https://www.example.com$request_uri;}server {    listen 443 ssl http2;    server_name example.com;    return 301 https://www.example.com$request_uri;}

Что поменять в config.php OpenCart

Домен в OpenCart должен совпадать с канонической версией Nginx. Если выбрали вариант без www, в config.php и admin/config.php используйте адреса без www.

// config.phpdefine('HTTP_SERVER', 'https://example.com/');define('HTTPS_SERVER', 'https://example.com/');// admin/config.phpdefine('HTTP_SERVER', 'https://example.com/admin/');define('HTTP_CATALOG', 'https://example.com/');define('HTTPS_SERVER', 'https://example.com/admin/');define('HTTPS_CATALOG', 'https://example.com/');

OpenCart особенно чувствителен к разным версиям домена в редиректах и конфигурации: могут появиться лишние переходы, проблемы с авторизацией в админке, корзиной, cookie, изображениями и mixed content. В моей практике это одна из самых частых причин «глюков» после переезда на новый домен или смены хостинга.

Как проверить редирект www → без www

curl -I http://www.example.com/curl -I https://www.example.com/curl -I https://example.com/

Первые два запроса должны отдавать 301 на https://example.com/. Третий запрос должен отдавать 200. Если получается цепочка из нескольких редиректов, объедините правила так, чтобы пользователь и поисковый робот попадали на итоговый URL за один шаг.

Частые ошибки при склейке www в OpenCart

  • В Nginx редирект идет на домен без www, а в config.php указан домен с www.
  • Сертификат выписан только на example.com, но редирект или HTTPS-блок использует www.example.com.
  • Одновременно настроены редиректы в Nginx, панели хостинга и CDN, из-за чего появляется цепочка.
  • После склейки не проверили корзину, личный кабинет, оплату и админку OpenCart.
  • В sitemap остались URL старой версии домена.

FAQ: редирект с www на без www в OpenCart на Nginx

Что лучше для OpenCart: www или без www?

Технически OpenCart нормально работает в обоих вариантах. Важно выбрать одну каноническую версию, прописать ее в Nginx и config-файлах OpenCart, а все остальные варианты редиректить на нее через 301.

Можно ли сделать редирект www на без www через OpenCart?

Лучше делать это на уровне Nginx. Так редирект срабатывает до запуска PHP и OpenCart, быстрее отрабатывает и меньше нагружает магазин.

Нужно ли менять sitemap после склейки домена?

Да. В sitemap должны быть только канонические URL: либо все с www, либо все без www. После изменения отправьте обновленную карту сайта в Яндекс.Вебмастер и Google Search Console.

Почему после редиректа не работает вход в админку?

Чаще всего причина в несовпадении домена в admin/config.php, cookies или цепочке редиректов. Проверьте, что админка, каталог и Nginx используют одну и ту же каноническую версию домена.

Как часто встречается проблема несовпадения домена в config.php?

На практике это одна из самых частых ошибок при настройке OpenCart. В 3 из 10 проектов, которые ко мне приходят на аудит, домен в конфигурационных файлах не совпадает с тем, что прописан в Nginx — и это приводит к проблемам с корзиной, оплатой и авторизацией.

paragraph —>

Если нужно настроить редиректы или исправить конфигурацию домена на вашем OpenCart-магазине — обратитесь за технической поддержкой. Мы настраиваем Nginx, SSL и домены так, чтобы магазин работал без сбоев.

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

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

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

Как лучше: Используйте единый редирект с www на без www (или наоборот) через серверный конфиг — это правильнее, чем через .htaccess в OpenCart. В Nginx добавьте return 301 ://example.com; в server-блок для www.

Как не делать: Не настраивайте редирект и в Nginx, и в .htaccess одновременно — они могут конфликтовать и создавать цепочку 301→301, которая теряет вес ссылок.

Кейс из практики: Магазин имел двойной редирект: www → без www в Nginx и ещё один в .htaccess. Яндекс видел цепочку из 2 редиректов и не передавал вес. Убрали дубль — трафик вырос.

Полное руководство по домену, DNS и SSL для магазина — настройка домена для интернет-магазина.

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

← Предыдущая Редирект HTTP на HTTPS в OpenCart на Nginx: правильная настройка Следующая → Стоимость лицензии OpenCart: сколько стоит CMS и запуск магазина

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

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

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

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