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

SEO PRO и AJAX запросы


SooR

Recommended Posts

Уже третий раз натыкаюсь на довольно неочевидный баг.

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

Лечится добавлением detectAjax

 

system/library/seopro.php

 

ищем

public function validate() {

после добавляем

$this->detectAjax();

получается так

public function validate() {
  $this->detectAjax(); // Снова проверяем

  // break redirect for php-cli-script
  if (php_sapi_name() === 'cli') 
    return;

  ...

UPD: после этого не забудьте обновить модификаторы!

UPD2: проверять в режиме инкогнито браузера!

  • +1 9
Надіслати
Поділитися на інших сайтах

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

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

 

Если запрос делать чистым javascript или jqwery ajax?

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


Не важно, если есть заголовок HTTP_X_REQUESTED_WITH: xmlhttprequest

jQuery.ajax - это красивая обертка нативного XHR

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

Я натыкался на момент что при включенном сеопро ajax запрос на ванильном js не отрабатывал, когда без включения сеопро - все было нормально

Вылечил добавлением 

к заголовку 

xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');

полный код, вдруг понадобится

function getXmlHttp() {
    let xmlhttp;
    try {
        xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        } catch (e) {
            xmlhttp = false;
        }
    }

    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }

    return xmlhttp;
}

function makeAjax(metodType, path, body, callback) {
    let getCallback = callback || function (data) {};
    let xhr = getXmlHttp();

    xhr.open(metodType, path, true);
    xhr.onload = function () {
        if (this.status == 200) {
            let data;
            try {
                data = JSON.parse(this.responseText);
            } catch (e) {
                data = this.responseText;
            }
            getCallback(data);
        } else {
            alert('Error: ' + this.status);
        }
    };
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.send(body);
}

В таком варианте отрабатывает на ура что post что get

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


вызов на моем примере из строящегося проекта

makeAjax('POST',
            'index.php?route=checkout/cart/add',
            'product_id=' + product_id + '&quantity=' + (typeof (quantity) != 'undefined' ? quantity : 1),
            function (json) {
                console.log(json)
                if (json.redirect) {
                    //document.location = json['redirect'];
                    if (elem) {
                        productView(product_id,
                            function () {
                                elem.classList.toggle('js_preloader');
                            });
                    }
                } else {
                    changeCartTotal();
                }
            });

 

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


В данном случае заголовок есть, проблема не на стороне клиента.

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

17 часов назад, chukcha сказал:

не аргументировано

 

 

13 часов назад, pimur сказал:

Интересно в какой момент seo pro становится злом?

Ведь альтернатив то в oc - нету.

Фрагментацией

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

В 13.03.2019 в 03:07, pimur сказал:

Ведь альтернатив то в oc - нету.

вообще не понимаю, почему Даниэль к 2019 году еще не решил проблему дублей в дефолтном Опенкарте?

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


34 минуты назад, Zetx сказал:

вообще не понимаю, почему Даниэль к 2019 году еще не решил проблему дублей в дефолтном Опенкарте?

По большому счету дубли ЧПУ не критичны
Поисковая система сама выберет канонически правильную релевантную страницу (и поверьте выберет правильную), а дубль удалит из индекса (а при редиректе, вы четко сами указываете какая основная. вот и вся разница) Но вы тоже можете ПС подсказать основную  через тег canonical
Просто псевдо сео шники из мухи слона раздули по этому поводу
Почему Даниэль не сделал - потому что есть ХК "откуда пришли"

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

По большому счету дубли ЧПУ не критичны
Поисковая система сама выберет канонически правильную релевантную страницу (и поверьте выберет правильную), а дубль удалит из индекса (а при редиректе, вы четко сами указываете какая основная. вот и вся разница) Но вы тоже можете ПС подсказать основную  через тег canonical
Просто псевдо сео шники из мухи слона раздули по этому поводу
Почему Даниэль не сделал - потому что есть ХК "откуда пришли"
Ну да, толькоксть к примеру 10000 товарных карточек.
Что в итоге, бот потратит свои ресурсы и обойдет в 4,5 раз больше чем надо было.

Отправлено через Tapatalk

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


35 минут назад, pimur сказал:

Ну да, толькоксть к примеру 10000 товарных карточек.
Что в итоге, бот потратит свои ресурсы и обойдет в 4,5 раз больше чем надо было.

Это другое дело, но в первую очередь он обойдет те канонические  страницы что  в индексе и ссылки которые доступны на сайте (никто же дубли ЧПУ не "располагает" (надеюсь все используют $this->url->link), разве что из производителей и поиска (который закрывается)) ;)
Так что по сути и здесь не критично. Так что по большому счету количество ЧПУ должно совпасть

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

Это другое дело, но в первую очередь он обойдет те канонические  страницы что  в индексе и ссылки которые доступны на сайте (никто же дубли ЧПУ не "располагает" (надеюсь все используют $this->url->link), разве что из производителей и поиска (который закрывается)) [emoji6]
Так что по сути и здесь не критично. Так что по большому счету количество ЧПУ должно совпасть
Марк пока сложно сказать как на самом деле.
Были у меня лично ровно 2 проекта.
Один очень развит, второй только начинал, вот на втором контент наполнение аналогично, правда запущен позже и карточек меньше. Но скоро не было, так как был на голом Опенкарт с сеоурл, трафик был - но в силу человеком часов я его дальше не развил, и точно щас не скажу, повлияло ли бы это или нет. Но с виду вроде и с него заказы были с только сео.


Поэтому сложно сказать, не проверив на деле.

Отправлено через Tapatalk

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


В 14.03.2019 в 23:11, markimax сказал:

Поисковая система сама выберет канонически правильную релевантную страницу (и поверьте выберет правильную), а дубль удалит из индекса (а при редиректе, вы четко сами указываете какая основная. вот и вся разница) Но вы тоже можете ПС подсказать основную  через тег canonical
Просто псевдо сео шники из мухи слона раздули по этому поводу

Каким образом поисковая система выберет канонически правильную релевантную страницу? Страница одна и та-же, только много разных ссылок на эту страницу.

Сanonical говорите? Рассказать для чего нужен canonical и что происходит при бездумном использовании?

Основное предназначение canonical указывать какую страницу отображать в результатах поиска при изменении адреса сайта с www на без www, с http на https, если страница доступна по ссылке с ЧПУ и без ЧПУ, если один и тот-же контент доступен по разным ссылкам для AMP страниц, HTML страниц и мобильных приложений (с указанием взаимосвязи страниц), Если страница опубликована в нескольких смежных разделах сайта тоже можно использовать canonical, но нельзя разрушать в хлам структуру сайта.

В Opencart все canonical страницы товаров в корне сайта! Т.е. ссылочной структуры нет, иерархии нет, а есть одна большая свалка в корне сайта. Точнее категории описывают структуру, но структура пустая... все товары в корне!

 

Основная задача SEO_PRO вовсе не ЧПУ, а построение ссылочной структуры сайта, мягкая переадресация (с минимальными просадками) при перестроении структуры. При переходе из рекомендуемых, бестселлеров и т.д. не схлопываются до корня сайта хлебные крошки. Как тебе тут поможет canonical?

Все что делает SEO_PRO соответствует рекомендациям поисковых систем.

 

Может "истинный" сяо шник хочет аргументированно опровергнуть мнение и рекомендации ПС?

Цитата

1. Поддерживайте четкую ссылочную структуру на сайте. Каждый документ должен относиться к своему разделу.

Цитата

4. Каждая страница должна иметь уникальный адрес (URL). Желательно, чтобы вид URL давал представление о том, что содержится на соответствующей странице.

Пруф Яндекс.Вебмастер: Структура сайта

 

Цитата

Создайте продуманную и логичную иерархию страниц.

Пруф Google: Рекомендации для веб-мастеров

 

Цитата

Используйте простую структуру каталогов

Систематизируйте свой контент так, чтобы структура каталогов позволяла пользователям легко ориентироваться на сайте, а URL отражали содержание страниц.

Цитата

Используйте один URL для каждого документа

Чтобы посетители не использовали разные URL для одного контента, у каждой страницы на сайте должен быть один уникальный адрес. Если посетители открывают один и тот же контент по разным ссылкам, настройте переадресацию 30132 с неканонических URL на основной. Также можно использовать канонический URL или атрибут rel="canonical"33, если переадресация невозможна.

Пруф Google: Руководство по поисковой оптимизации для начинающих

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

  • 4 months later...
  • 4 months later...
В 12.03.2019 в 22:45, SooR сказал:

Уже третий раз натыкаюсь на довольно неочевидный баг.

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

Лечится добавлением detectAjax

 

system/library/seopro.php

 

ищем


public function validate() {

после добавляем


$this->detectAjax();

получается так


public function validate() {
  $this->detectAjax(); // Снова проверяем

  // break redirect for php-cli-script
  if (php_sapi_name() === 'cli') 
    return;

  ...

UPD: после этого не забудьте обновить модификаторы!

UPD2: проверять в режиме инкогнито браузера!

Отличное рабочее решение, только после него невозможно в админке часть операций выполнить. Например, скопировать товар. Относится к Ocstore 3 в частности.

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


15 минут назад, chinyaev сказал:

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

бред, причем здесь админка

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

  • 7 months later...
В 12.03.2019 в 20:45, SooR сказал:

Уже третий раз натыкаюсь на довольно неочевидный баг.

В validate идет XHR (и, соответственно, редиректится при обнаружении параметров для реврайта), который должен игнорироваться.

Лечится добавлением detectAjax

 

system/library/seopro.php

 

ищем


public function validate() {

после добавляем


$this->detectAjax();

получается так


public function validate() {
  $this->detectAjax(); // Снова проверяем

  // break redirect for php-cli-script
  if (php_sapi_name() === 'cli') 
    return;

  ...

UPD: после этого не забудьте обновить модификаторы!

UPD2: проверять в режиме инкогнито браузера!

Огромное спасибо, долго искал решение работы ocFilter + seoPro на ocStore 3

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


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

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

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

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

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

Вхід

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

Вхід зараз

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

Important Information

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