Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


gregoro

Recommended Posts

Добрый день!

 

У меня осктор 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 2
Надіслати
Поділитися на інших сайтах

Правильно так: контроллере 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

Надіслати
Поділитися на інших сайтах


это странно

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
Надіслати
Поділитися на інших сайтах

  • 5 months later...
В 31.08.2017 в 10:57, gregoro сказал:

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

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

Надіслати
Поділитися на інших сайтах


  • 1 year later...
В 31.08.2017 в 12:55, Otvet сказал:

это странно

 


$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);

 

Ваш метод работает не до конца.

При обновлении кеша модификаторов в менеджере дополнений в админ панели - все опять приходит к старому виду 302 Found.

И это при том что строки остаются на месте. Что в этом случае делать? Можно это как то решить?

Надіслати
Поділитися на інших сайтах


В 31.08.2017 в 15:09, chukcha сказал:

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

Убрать


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

Оставить

 

 

Строка

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

Находится в файле в двух местах 

здесь

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

 

и здесь

 

 

if (rawurldecode($url) != rawurldecode($seo)) {
            header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently');

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

 

 

Нужно просто удалить её в двух местах или что-то другое сделать? Поясните пожалуйста.

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.