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

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

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

В 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;

  ...

 

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


Ссылка на сообщение
Поделиться на другие сайты
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

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


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

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

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();
                }
            });

 

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


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

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

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


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

seo_pro - зло
 

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


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

seo_pro - зло
 

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

 

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


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

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

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

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


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

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

 

 

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

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

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

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

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


Ссылка на сообщение
Поделиться на другие сайты
В 13.03.2019 в 03:07, pimur сказал:

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

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

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


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

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

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

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


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

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

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


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

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

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

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


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


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

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

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


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

Да и проекты в одной тематике с 1в 1 контентом просто на старом больше контента было, как следствие и продаж

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

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Вы комментируете как гость. Если у вас есть аккаунт, пожалуйста, войдите
Ответить в этой теме...

×   Вы вставили контент с форматированием.   Удалить форматирование

  Разрешено использовать не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


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

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

×

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

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