В индексе яндекс много мусорных ссылок типа ?_= Есть решение

Может кто знает откуда берутся подобные ссылки:

/category/tovar/?_=1618986765517&page=6

/category/tovar/?_=1618987135588&page=2

/category/tovar/?_=1618998883955&page=2


и как от них избавиться?

Тоже само про /tovar/?clid=2270459

и /tovar/?sku=900

15 ответов

  • 1
    Vladislav 4 сентября 2021 09:10 #

    В общем решил так попробовать:

    Clean-param: clid /
    Clean-param: sku /
    Clean-param: _ /

  • 0

    Можете использовать плагины:

    - SEO Meta Robots (для закрытия от индексации с помщью метатега noindex)

    - SEO Link Canonical (для передачи веса со страниц на канонические страницы с помощью Link Canonical)

     

    Указанные в примере страницы плагины определяют как "Мусорные страницы" и применяют к ним соответствующие правила, заданные в настройках. 

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

  • 0

    Кстати, касательно get-параметра "?_=": стандартная функция получения get-параметра во фреймворке Webasyst из-за особенностей работы PHP не видит этот get-параметр.

    - Я этот момент обошел в плагинах дополнительной проверкой URL-адреса страницы.

    - в другом плагине (предоставляющем функционал для управления "Link Canonical") от одного известного разработчика такая проверка отсутствует. По-крайней мере, она была актуальна на момент моей последней проверки (около 2-х месяцев назад), с тех пор обновлений не выходило.

    • 0
      Vladislav Vladislav 4 сентября 2021 10:37 #

      Спору нет. Ваши плагины лучшие для этих задач, но было бы здорово дополнить их плагином SEO Clean-param или учитывать директивы Clean-param в настройках существующих плагинов.

      Для гугла и User-agent: * без SEO Link Canonical никуда, но пока есть Яндекс приходится учитывать его хотелки относительно  Clean-param. 

      • +1

        Шаблонный robots.txt можете посмотреть у меня в блоге - здесь. Встраивать в плагин фунционал, который будет вклиниваться в robots.txt - сложная задача, и на данный момент не вижу в этом особо смысла.

    • +2
      replicant replicant 4 сентября 2021 15:00 #

      В шаблоне для URL типа /category/tovar/?_=1618987135588 применение  {$wa->get("_")} вернет значение 1618987135588, а {$smarty.get|@count} выдаст для этого же URL значение 1, что облегчает построение условия для отсечения любых левых get, кроме page для категорий и sku для товаров при соответствующей проверке на $action.

      Остальное зависит от фантазии автора шаблона. :)))

      • +1
        Vladislav Vladislav 4 сентября 2021 15:29 #

        Ничего не понятно, но очень интересно. :)

        Можно инструкцию для смертных.

        • +1
          replicant replicant 6 сентября 2021 14:52 #
          Можно инструкцию для смертных.

          Для смертных лучше бы использовать плагины по ссылкам выше. Купил, поставил, пользуешься.

          Но, если совсем хочется экспериментов и покопаться, поизучать, то вот кусок кода для обработки категорий (бонусом к нему +canonical и +prev-next).

          {if $action == 'category'}
          
          {$x=$smarty.get|@count}
          {$g = $wa->get("page")}
          
              {if empty($canonical)}
                  <link rel="canonical" href="{$wa->domainUrl()}{$wa->shop->categoryUrl($category)}" />
              {/if}
              
              {if $x > 1}
                  <meta name="robots" content="noindex, follow" />
              {elseif $x == 1 && wa_is_int($g) != 'true' }
                  <meta name="robots" content="noindex, follow" />
              {elseif $x == 1 && $g > 1 && $g <= $pages_count}
                  <!-- index -->
              {elseif $x == 1}
                  <meta name="robots" content="noindex, follow" />
              {elseif $x == 0 && ($wa->currentUrl()|strpos:"?">0)}
                  <meta name="robots" content="noindex, follow" />
              {else $x == 0}
                  <!-- index -->
              {/if}
          
          {if isset($pages_count) && $pages_count > 1 && $g > 1}
              {if wa_is_int($g) == 'true' && $x == 1 && $g <= $pages_count}
                  {if $g == $pages_count && $pages_count != 2}
                      <link rel="prev" href="{$wa->domainUrl()}{$wa->shop->categoryUrl($category)}?page={$g - 1}">
                  {elseif $g > 2}
                      <link rel="prev" href="{$wa->domainUrl()}{$wa->shop->categoryUrl($category)}?page={$g - 1}">
                      <link rel="next" href="{$wa->domainUrl()}{$wa->shop->categoryUrl($category)}?page={$g + 1}">
                  {elseif $g == 2 && $pages_count == 2}
                      <link rel="prev" href="{$wa->domainUrl()}{$wa->shop->categoryUrl($category)}">
                  {elseif $g == 2}
                      <link rel="prev" href="{$wa->domainUrl()}{$wa->shop->categoryUrl($category)}">
                      <link rel="next" href="{$wa->domainUrl()}{$wa->shop->categoryUrl($category)}?page={$g + 1}">
                  {/if}
              {/if}
          {/if}
          
          {/if}

          P.S. В свете последних опытов, когда выяснилось, что page=5df то же самое, что и page=5, код немного усложнился. Если в индекс страницы вида page=6abc не попадают, то всё можно упростить, но мне такие страницы в индексе как-то повстречались. Откуда? Не знаю. Парочка попалась.

          • +1

            — Те кто хочет "экспериментов и покопаться, поизучать" - имейте в виду, что:

            1) приведенный кусок кода закроет от индексации страницы плагина SEO-фильтр. replicant, вероятно, его не использует, поэтому дополнительную проверку в коде не делает.

            2) приведенный кусок кода закроет от индексации только мусорные страницы в категориях сайта (есть еще страницы товаров, страницы брендов, главная страница, и множество других).

            3) приведенный кусок кода выведет каноникал, но не отключит дублирующийся каноникал, добавляемый движкомв теме дизайна.

            4) приведенный кусок кода выведет каноникал, но не отключит дублирующийся каноникал, добавляемый движкомв http-заголовке.

            5) "prev", "next" уже давно не используются поисковыми системами =)

             

            — Те кто не являются программистами и просто хотят решить проблему с индексацией сайта быстро и безопасно - ставьте плагины. Работают без необходимости интеграции: поставил, настроил, забыл. 

      • +1

        В шаблоне для URL типа /category/tovar/?_=1618987135588 применение {$wa->get("_")} вернет значение 1618987135588, а {$smarty.get|@count} выдаст для этого же URL значение 1, что облегчает построение условия для отсечения любых левых get, кроме page для категорий и sku для товаров при соответствующей проверке на $action.

        Дмитрий, проверяйте инфу перед публикацией =)

        - {$wa->get("_")} на странице /category/tovar/?_=1618987135588 вернет null

        - {$smarty.get|@count} на странице /category/tovar/?_=1618987135588 вернет 0

        • +1
          replicant replicant 6 сентября 2021 19:37 #

          Инфа моя 100%. Этим просто надо уметь правильно пользоваться. :))) (могу научить за $) :)))

          Код ниже

          Кусок кода - это просто кусок сам по себе, вырванный из общего контекста темы, который комментировать как бы и смысла даже не вижу. Кому надо, пусть копается самостоятельно на свой страх и риск. Мне он и таким нравится как есть.

          • +1


            Инфа моя 100%. Этим просто надо уметь правильно пользоваться. :))) (могу научить за $) :)))

            В некоторых случаях {$wa->get("_")} на странице /category/tovar/?_=1618987135588 действительно может вернуть null — гет-параметр "_" не попадает в массив. Потестил сейчас на 5-ти сайтах на WA - на двух из них встретил именно такое поведение. С чем именно это связано - затрудняюсь ответить. Возможно, с версией PHP, возможно с версией фреймворка WA, возможно что-то еще. Когда я столкнулся с этой проблемой при разработке плагина - я не стал глубоко копать, а просто сделал доп. проверку через $_SERVER['REQUEST_URI'].

            В любом случае, ваш код не универсален и инфа не 100%.

            Кусок кода - это просто кусок сам по себе, вырванный из общего контекста темы, который комментировать как бы и смысла даже не вижу.

            Некоторые пользователи могут начать использовать его точь-в-точь в том виде, в котором вы его выложили. Я лишь предупредил о наличии в нем довольно критичных проблем (в первую очередь - закрытие от индексации страниц плагина SEO-фильтр). Есть риск что ваша попытка помочь может оказаться для кого-то медвежьей услугой. 

  • 1
    Vladislav 6 сентября 2021 21:36 # Решение

    Ребятушки, представленный код для смертных не подошел, т.к. требует дополнительных знаний и понимания на 100% всего в нем написанного и тонкой настройки под свой проект. 

    Из всего описанного могу сформулировать рецепт решения проблемы для чайника так:

    Clean-param отсюда и SEO Link Canonical для прочего мусора, но без SEO Meta Robots т.к. он душит все нужное и ненужное, а одним SEO Link Canonical без Clean-param до яндекса не достучаться, а откуда какой мусор берется вы как разработчики и сами знаете и наверно когда нить подлатаете. Спасибо за участие

    • +3
      replicant replicant 7 сентября 2021 08:09 #

      Поэтому я тоже говорил, что надо юзать плагины. Мои "костыли" это просто танцы-шманцы от нечего делать для лабораторных опытов, хотя в комплексе с другими вещами оно у меня всё же работает, но это ни разу не совет для всех. Когда "состарюсь", то перейду на плагин (возможно, но это не точно).

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите