Редиректы 302 и 301 с Seo_Pro на Opencart

Просмотров: 12100Комментарии: 5

Суть проблемы

Часто в магазинах на Opencart seo_pro отдает неправильный HTTP-код при редиректе, а именно 302 вместо 301.

Это произошло ввиду сохранения рудиментарного кода, который работал на 1.x версиях, но не работает на современных.

А именно заголовок отдавался так:

header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');

что не cрабатывает.


Решения

Существует несколько способов, есть правильные и не правильные.

  • Правка system/library/response.php
  • Наиболее распространено, но это не правильный путь.

    В Opencart нет редиректов на единственный путь для товаров и категорий как делает seo_pro, а все базовые редиректы сводятся к перебросу пользователя на страницу авторизации при попытке захода на одну из страниц, доступ к которым есть только для авторизованных (личный кабинет, заказы и т.д.). Там должен быть код 302 ("Список заказов" не может быть навсегда перемещен во "Вход в систему", а пользователь временно перемещается на другую страницу для авторизации).

    Так же возможны варианты кодов 303 или 307, но это уже спорно. Точно не 301!

    Seo_pro в свою очередь это отдельное дополнение, оно должно учитывать особенность Opencart и при редиректах отдавать в системный метод необходимый код.

  • Правка seo_pro.php
  • Правильный способ, хотя и не единственный.

    В вызов редиректа нужно добавить код редиректа (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);

    Ну и не забыть про обновление модификаторов

    Проверить ответ сервера можно например тут

    Комментариев: 5

    Оставьте комментарий!
    • Без регистрации
    • Вход/Регистрация

    Комментарий будет опубликован после проверки

    Вы можете войти под своим логином или зарегистрироваться на сайте.

    grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

    • 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