Откуда 302 редирект?

Привет!
Ребят, подскажите один момент…

На сайте откуда то появился 302 редирект. В каталоге перехожу на 3 страницу, обновляю страницу, редиректит на первую. В консоли написано 302 Found…

На обычной странице без mfilter, обычный вывод статей с пагинацией: перехожу на третью страницу и получаю редирект.

При этом, когда перехожу на вторую страницу — редиректа нет!!!
Что за беда? Кто знает?

Сначала сайт делал на digitalocean, там nginx… Потом перенес на sweb, там Apache… Но редирект появляется и на nginx'e.
Помогите понять:) На всякий случай ссылку даю
Андрей Сухомозгий
20 марта 2015, 16:20
modx.pro
2 829
0

Комментарии: 15

Василий Наумкин
20 марта 2015, 19:45
0
pdoPage редиректит с несуществующих страниц.

У тебя там что-то накручено с параметрами. Если указать limit — то всё работает.
    Андрей Сухомозгий
    20 марта 2015, 19:48
    0
    [[!pdoPage?
    	&element=`getTickets`
    	&tpl=`custom_tpl.Tickets.list.row`
    	&includeTVs=`article_pic`
    	&limit=`1`
    ]]
    [[!+page.nav]]
    Вот такой вызов… На других сайта все нормально вроде. Про какие параметры ты говоришь?..
      Василий Наумкин
      20 марта 2015, 19:51
      0
      Не знаю, проверяй свой шаблон, убирай всё подозрительное. Может у тебя там еще где-то есть пагинация и она мешает

      Видно же, что моя ссылка работает.
        Андрей Сухомозгий
        20 марта 2015, 21:26
        +2
        Да… Извини) Сам виноват… Забыл &pageVarKey указать у второго вызова pdoPage
      Андрей
      08 августа 2016, 14:21
      0
      Столкнулчя с такой же проблемой. Не могу решить. limit не помогает. Вот ссылка на категорию
        tools
        17 марта 2017, 16:40
        0
        Василий, скажи пожалуйста, можно ли заменить 302 редирект с ?page=1 на 301 редирект? А в идеале, вообще убрать ссылку на первую страницу с параметром :)
        Уже несколько SEO'шников этого хотят.)
          tools
          18 марта 2017, 18:25
          0
          Кстати говоря, в mFilter2 нет параметра (напр. ?page=1) в ссылке на первую страницу, хотя по умолчанию пагинатор-то тоже pdoPage. Вот нужно такое повторить для сниппета pdoPage без связки с mFilter2. Если такое есть в параметрах, или где-то нужно указать в js скрипте – ткни пожалуйста носом.
            Василий Наумкин
            18 марта 2017, 18:31
            +1
            Вот нужно такое повторить
            2000 рублей, оплачивать на моём сайте — bezumkin.ru
              tools
              29 марта 2017, 17:36
              0
              Василий, скажи пожалуйста, если сегодня оплачу, когда будет время сделать:
              Нужно убрать ссылку с параметром (site.ru/link?page=1) на первую страницу, чтобы было так: (site.ru/link), на остальные – как обычно. Цель, чтобы не было редиректов 302/301.
                Василий Наумкин
                29 марта 2017, 17:39
                +4
                Ты пока разгонялся, уже вышла новая версия, где это сделано.

                Смотри changelog версии 2.8.3-pl.
                  tools
                  30 марта 2017, 10:42
                  0
                  дело в том, что обновил, проверяю, ссылка на первую страницу с page=1 также есть, если отключаю ajaxMode, всё хорошо. Завел на modhost сегодня сайтик, чтобы проверить, мало ли, может что-то у меня, и вот:


                  Вызов сниппета такой:
                  <div id="pdopage">
                      <div class="rows">
                          [[!pdoPage?
                          	&element=`pdoResources`
                          	&parents=`0`
                          	&ajaxMode=`default`
                          	&tpl=`@INLINE <p>[[+idx]]. <a href="[[+link]]">[[+pagetitle]]</a></p>`
                          ]]
                      </div>
                      [[!+page.nav]]
                  </div>

                  Версия pdoTools 2.8.3-pl
                  Что я делаю не так?
                    tools
                    03 апреля 2017, 07:53
                    0
                    Василий, уже достал тебя, знаю, но не выходит у меня) Нашел файл с изменениями (pdopage.js) по умолчанию подключается к вызову pdopage.min.js, указал
                    &frontend_js=`[[+assetsUrl]]js/pdopage.js`
                    Вот ссылка на первую страницу при первой загрузке страницы:

                    Так выглядит ссылка на первую стр. при переходе на вторую (и последующие) страницы:

                    Вызов такой:
                    <div id="pdopage">
                        <div class="rows">
                            [[!pdoPage?
                            	&element=`pdoResources`
                            	&parents=`0`
                            	&useWeblinkUrl=`1`
                            	&ajaxMode=`default`
                            	&ajaxHistory=``
                            	&frontend_js=`[[+assetsUrl]]js/pdopage.js`
                            	&tpl=`@INLINE <p>[[+idx]]. <a href="[[+link]]">[[+pagetitle]]</a></p>`
                            	&tplPageWrapper=`@INLINE <ul class="pagination">[[+first]][[+prev]][[+pages]][[+next]][[+last]]</ul>`
                            ]]
                        </div>
                        [[!+page.nav]]
                    </div>
                    Что нужно сделать, чтобы page=1 не было?

                    p.s. При отключенном ajaxMode всё хорошо. На сайте используется подгрузка по кнопке, пагинация скрыта от посетителей, но поисковые роботы всё равно видят в коде ссылку на первую страницу с параметром page=1
            vsevolod
            11 февраля 2018, 12:06
            0
            Здравствуйте, Василий Наумкин. У меня вопрос возникший с проблемой 302 редиректа у меня все сеошники придераются и просят сделать вместо него 301 пример страница /?page=1 в оригинальной версии компонента производит редирект 302 на каталог родитель. Я решил данную проблему путем правок исходников php данного компонента но при обновлении я понимаю что все мои правки слетят. Подскажите пожалуйста возможно ли сразу внести данные изминения в компонент или придется делать себе где то заметки и при каждом обновлении вручную править? Заранее благодарен за ответ. С Уважением Всеволод.
              Кирилл
              14 января 2020, 18:30
              0
              Была такая проблема с 302 редиректом для первой страницы:
              <section class="row content">
                      <section class="col-lg-12 articles">
                        <div class="row"></div>
                      [[!pdoPage?
                          &parents=`3`
                          &ajaxMode=`default`
                          &tpl=`blog_tpl`
                          &includeTVs=`img_blog`
                          &limit=`3`
                          &includeContent=`1`
                          &tplPage=`@INLINE <li><a href="[[+href]]">[[+pageNo]]</a>`
                          &tplPageWrapper=`@INLINE <ul>[[+prev]][[+pages]][[+next]]</ul> `
                          &tplPageActive=`@INLINE <li class="active"><a href="[[+href]]">[[+pageNo]]</a>`
                          &tplPagePrev=`@INLINE <li class="first"><a href="[[+href]]"><i class="icon arrow-menu"></i></a></li>`
                          &tplPageNext=`@INLINE <li class="last"><a href="[[+href]]"><i class="icon ico-pag"></i></a></li>`
                          &tplPagePrevEmpty=`@INLINE <li class="disabled"><</li>`
                          &tplPageNextEmpty=`@INLINE <li class="disabled">></i></li>`
                         
                      ]]
                        <div class="row pagination">
                          <div class="col-lg-12">
                              [[!+page.nav]]
                          </div>
                        </div>
                      </section>
                    </section>
              И в итоге в перелинковке 302 редирект. От него решили не избавляться, а просто убрать из перелинковки "/?page=1". В моём случае надо было убрать &ajaxMode=`default`
              <section class="row content">
                      <section class="col-lg-12 articles">
                        <div class="row"></div>
                      [[!pdoPage?
                          &parents=`3`
                          &tpl=`blog_tpl`
                          &includeTVs=`img_blog`
                          &limit=`3`
                          &includeContent=`1`
                          &tplPage=`@INLINE <li><a href="[[+href]]">[[+pageNo]]</a>`
                          &tplPageWrapper=`@INLINE <ul>[[+prev]][[+pages]][[+next]]</ul> `
                          &tplPageActive=`@INLINE <li class="active"><a href="[[+href]]">[[+pageNo]]</a>`
                          &tplPagePrev=`@INLINE <li class="first"><a href="[[+href]]"><i class="icon arrow-menu"></i></a></li>`
                          &tplPageNext=`@INLINE <li class="last"><a href="[[+href]]"><i class="icon ico-pag"></i></a></li>`
                          &tplPagePrevEmpty=`@INLINE <li class="disabled"><</li>`
                          &tplPageNextEmpty=`@INLINE <li class="disabled">></i></li>`
                         
                      ]]
                        <div class="row pagination">
                          <div class="col-lg-12">
                              [[!+page.nav]]
                          </div>
                        </div>
                      </section>
                    </section>
              И больше в перелинковке не было 302 редиректа для page=1 при использовании pdopage. А вы так понимаю изменяли в исходниках с 302 на 301? Почему сразу в pdopage по умолчанию в компоненте не использовать 301?
                Михаил
                20 апреля 2020, 11:51
                0
                Чтобы поменять 302 редирект на 301, не правя исходники и с сохранением возможности обновления pdoTools, нужно:
                1. Создать в системных настройках modx настройку pdoPage.class со значением pdotools.pdopagecustom joxi.ru/Dr8ygaRhoEYjgm
                2. Создать в папке core/components/pdotools/model/pdotools файл pdopagecustom.class.php со следующим содержимым:
                <?php
                
                require_once MODX_CORE_PATH . 'components/pdotools/model/pdotools/pdopage.class.php';
                
                class pdoPageCustom extends pdoPage
                {
                    /** @var modX $modx */
                    public $modx;
                    /** @var pdoTools $pdoTools */
                    public $pdoTools;
                    /** @var string $req_var */
                    protected $req_var = '';
                
                
                    /**
                     * @param modX $modx
                     * @param array $config
                     */
                    public function __construct(modX & $modx, $config = array())
                    {
                        $this->modx = &$modx;
                
                        $fqn = $modx->getOption('pdoTools.class', null, 'pdotools.pdotools', true);
                        $path = $modx->getOption('pdotools_class_path', null, MODX_CORE_PATH . 'components/pdotools/model/', true);
                        if ($pdoClass = $modx->loadClass($fqn, $path, false, true)) {
                            $this->pdoTools = new $pdoClass($modx, $config);
                        } else {
                            return;
                        }
                        $modx->lexicon->load('pdotools:pdopage');
                    }
                    
                    /**
                     * Redirect user to the first page of pagination
                     *
                     * @param $isAjax
                     *
                     * @return string
                     */
                    public function redirectToFirst($isAjax = false)
                    {
                        unset($_GET[$this->pdoTools->config['pageVarKey']]);
                        unset($_GET[$this->modx->getOption('request_param_alias', null, 'q')]);
                        if (!$isAjax) {
                            $this->modx->sendRedirect(
                                $this->modx->makeUrl(
                                    $this->modx->resource->id,
                                    $this->modx->context->key,
                                    $_GET,
                                    'full'
                                ),
                                array('responseCode' => 'HTTP/1.1 301 Moved Permanently')
                            );
                
                            return '';
                        } else {
                            $_GET[$this->pdoTools->config['pageVarKey']] = 1;
                            $_REQUEST = $_GET;
                
                            return $this->pdoTools->runSnippet('pdoPage', $this->pdoTools->config);
                        }
                    }
                
                }
                В функции redirectToFirst добавлен 301 редирект.
                  Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                  15