Суть проблемы
Часто в магазинах на Opencart seo_pro отдает неправильный HTTP-код при редиректе, а именно 302 вместо 301.
Это произошло ввиду сохранения рудиментарного кода, который работал на 1.x версиях, но не работает на современных.
А именно заголовок отдавался так:
header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
что не cрабатывает.
Решения
Существует несколько способов, есть правильные и не правильные.
Наиболее распространено, но это не правильный путь.
В Opencart нет редиректов на единственный путь для товаров и категорий как делает seo_pro, а все базовые редиректы сводятся к перебросу пользователя на страницу авторизации при попытке захода на одну из страниц, доступ к которым есть только для авторизованных (личный кабинет, заказы и т.д.). Там должен быть код 302 ("Список заказов" не может быть навсегда перемещен во "Вход в систему", а пользователь временно перемещается на другую страницу для авторизации).
Так же возможны варианты кодов 303 или 307, но это уже спорно. Точно не 301!
Seo_pro в свою очередь это отдельное дополнение, оно должно учитывать особенность Opencart и при редиректах отдавать в системный метод необходимый код.
Правильный способ, хотя и не единственный.
В вызов редиректа нужно добавить код редиректа (301 после запятой).
Было
$this->response->redirect($this->cache_data['queries'][$route_]); ... $this->response->redirect($seo);
стало
$this->response->redirect($this->cache_data['queries'][$route_], 301); ... $this->response->redirect($seo, 301);
Ну и не забыть про обновление модификаторов
Проверить ответ сервера можно например тут
1Niko20-02-2023 14:32Учитываю...
Здравствуйте, а что делать, если это уже прописано в seo_pro.php, но все равно 302?
2master23-02-2023 17:24Учитываю...
Niko, где именно?
3Niko24-02-2023 15:48Учитываю...
master, catalog\controller\startup\seo_pro.php
Версия ocStore 2.3.0.2.4
****market.pro
4master24-02-2023 21:13Учитываю...
Niko, речь про страницы где 302
301 не везде должно быть
5Юрий05-12-2023 19:08Учитываю...
https://liveopencart.ru/opencart-moduli-shablony/moduli/obmen-dannyimi/integratsiya-po-api-s-yandeks-market-=-beru При использовании его или иного модуля которрый обращается по апи + сео про ошибка 301