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

Просмотров: 330Комментарии: 0

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

Часто в магазинах на 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);

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

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

    Комментариев: 0 RSS

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

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

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

    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

    Бот выберет схему, а человек - яблоко!