Перейти к содержанию
gregoro

сделать 301 редирект вместо 302 в чпу-урлах

Рекомендуемые сообщения

Добрый день!

 

У меня осктор 2.1

Каждый товар там имеет 2 урла:

1) один вида http://site.ru/index.php?route=product/product&path=20_59&product_id=173

2) второй вида http://site.ru/tovar

 

Когда сбрасывается кеш магазина - во фронтенде остается только второй вид урла.

Но где-то в коде все равно есть первый, он попадает в вебмастер.

 

Заметил, что первый урл редиректит на второй с 302 редиректом.

 

Но в то же время я понимаю, что по уму здесь должен быть 301 (ибо с 302 как я понимаю поисковик периодически опрашивает оба адреса, а нафига оно надо...)

 

Как это поменять можно?

P.S. Если считаете, что это неважно - напишите почему плз :-) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

доброе утро!

в папке /system/library есть файл response.php

в нём меняйте 302 на 301

	public function redirect($url, $status = 302) {
		header('Location: ' . str_replace(array('&', "\n", "\r"), array('&', '', ''), $url), true, $status);
		exit();
	}

 

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Правильно так: контроллере seo_pro находите методы редиректа и передаете в параметре 301

 

было так 

$this->response->redirect(...);

стало так

$this->response->redirect(..., 301);
  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Otvet сказал:

Правильно так: контроллере seo_pro находите методы редиректа и передаете в параметре 301

 

было так 


$this->response->redirect(...);

стало так


$this->response->redirect(..., 301);

поясните, пожалуйста, чем ваше решение правильнее? правильно, с точки зрения архитектуры OC?

на всех сайтах использую приведённое мной - ошибок не возникает, идёт 301 редирект

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В опенкарт редиректы во фронте это редиректы на страницу авторизации при попытке перехода на одну из страниц личного кабинета. Там не должно быть 301 ("Список заказов" перемещен навсегда во "Вход в систему")

 

Сеопро же является отдельным дополнением, оно само должно учитывать эту особенность и изначально работать правильно, система не может подстраиваться под сторонний ЧПУ-контроллер

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Otvet сказал:

Правильно так: контроллере seo_pro находите методы редиректа и передаете в параметре 301

 

было так 


$this->response->redirect(...);

стало так


$this->response->redirect(..., 301);

 

Спасибо за ответ!

Нашел файл, про него ведь речь?   /system/storage/modification/catalog/controller/common/seo_pro.php

Там две упоминаемых вами строчки есть.

И неподалеку от них (от этих строчек) уже стоят цифры 301...

 

Можете глянуть если понимаете в этом? Отблагодарю как скажете :-) Файл прикрепил.
P.S. Я не программист. Для меня чистый код php - почти иероглифы)

new 1.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проверьте код ответа сервера 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
44 минуты назад, Otvet сказал:

проверьте код ответа сервера 

302...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это странно

1 час назад, gregoro сказал:

И неподалеку от них (от этих строчек) уже стоят цифры 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);
  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
        header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
                    $this->response->redirect($this->cache_data['queries'][$route_]);

а здесь, 301 т.е. по сути header не нужен

  • +1 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Otvet сказал:

 


$this->response->redirect($this->cache_data['queries'][$route_], 301);
....

$this->response->redirect($seo, 301);

 

Заработало все! Спасибо вам огромное :-) 

Если требуется благодарность - не стесняйтесь кинуть в личку реквизиты :-) 

 

 

1 час назад, chukcha сказал:

        header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');
                    $this->response->redirect($this->cache_data['queries'][$route_]);

а здесь, 301 т.е. по сути header не нужен

Можете мысль пояснить, пожалуйста?

Каким образом нужно код поправить на ваш взгляд и почему?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');

Убрать

$this->response->redirect($this->cache_data['queries'][$route_], 301);

Оставить

 

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 31.08.2017 в 10:57, gregoro сказал:

Нашел файл, про него ведь речь?   /system/storage/modification/catalog/controller/common/seo_pro.php

думаю править правильней будет тут: /www/catalog/controller/startup/seo_pro.php
по вашему это правки в кэше!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.