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

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

  В 12.03.2019 в 18:45, SooR сказав:

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

 

Expand  

Если запрос делать чистым 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();
                }
            });

 

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


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

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

  В 12.03.2019 в 21:21, chukcha сказав:

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

 

Expand  

 

  В 13.03.2019 в 01:07, pimur сказав:

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

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

Expand  

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

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

  В 13.03.2019 в 01:07, pimur сказав:

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

Expand  

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

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


  В 14.03.2019 в 19:45, Zetx сказав:

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

Expand  

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

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

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

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

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


  В 14.03.2019 в 21:45, pimur сказав:

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

Expand  

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

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

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


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

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

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


  В 14.03.2019 в 20:11, markimax сказав:

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

Expand  

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

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

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

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

 

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

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

 

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

  Цитата

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

Expand  
  Цитата

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

Expand  

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

 

  Цитата

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

Expand  

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

 

  Цитата

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

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

Expand  
  Цитата

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

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

Expand  

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

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

  • 4 months later...
  • 4 months later...
  В 12.03.2019 в 18: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: проверять в режиме инкогнито браузера!

Expand  

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

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


  В 12.04.2020 в 20:05, chinyaev сказав:

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

Expand  

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

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

  • 7 months later...
  В 12.03.2019 в 18: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: проверять в режиме инкогнито браузера!

Expand  

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

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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