Использование Post-Redirect-Get для скрытия ссылок от поисковых систем

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

Во-вторых, скрывая отдельные ссылки от поисковых систем, “ссылочный сок” страницы делится только между открытыми ссылками.

В третьих, часто приходится скрывать от индексации внешние ссылки, не заслуживающие прямой и честной ссылки (например реферальные ссылки).

В целом, задача надежного сокрытия ссылки от поисковых систем не имела до сих пор однозначного решения.

1. Как закрывают ссылки от индексации

Первым способом, запрещающим роботу ПС переходить по ссылке, является добавление к ней атрибута nofollow. Способ хорош своей простотой, но при этом ссылочный вес, выделяемый на ссылку с nofollow утекает в никуда, тем самым, после нескольких иттераций переиндексирования, снижая общий вес сайта в целом.

Почему это происходит?

Предположим есть страница с 3 внутренними ссылками. Есть определенный вес (ссылочный бюджет), который эта страница может передать в сумме для всех ссылок. Передаваемый вес по ссылке для каждой страницы равен ссылочному бюджету, деленному на число ссылок ( a href= ).

Закрытие внешней ссылки nofollow

Если одна ссылка будет закрыта Nofollow, то выделяемый на неё вес не будет перераспределяться на две оставшиеся ссылки, а будет утерян. То есть 2 оставшиеся страницы получают не по 1/2 ссылочного бюджета, а по 1/3.

Вторым способом является закрытие ссылки Java скриптом. Разработаны десятки модификаций таких скриптов и я, традиционно, на протяжении многих лет, отправляю всех к Алаичу, в своего рода репозиторий способов закрытия ссылок от индексации.

Недостатков у такого способа ровно два:

  1. Часть скриптов не работает. Google научился их “разбирать” и понимать что там скрыто.
  2. При выключенных в браузере Java скриптах, ссылки становятся недоступными.

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

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

2. Post Redirect Get для закрытия ссылки от индексации

PRG Pattern (Post – Redirect – Get) – это старая технология, но применение её в целях SEO до сих пор не было распространено. Вот что говорит об этой технике Wikipedia:

Post/Redirect/Get (PRG) — модель поведения веб-приложений, используемая разработчиками для защиты от повторной отправки данных веб-форм (от т. н. double submit problem). Модель PRG обеспечивает интуитивно понятное поведение веб-приложений при обновлении страниц в браузере и при использовании закладок в браузере.
Суть проблемы повторной отправки веб-формы заключается в том, что после первой отправки и получения результата пользователь может нажать в браузере кнопку “Обновить”, в результате чего данные могут быть отправлены повторно, а это может привести к нежелательным последствиям, как, например, повторная покупка в интернет-магазине, повторный перевод денег с банковского счета и т. д. Повторная отправка может произойти и без кнопки “Обновить”, если браузер настроен автоматически “восстанавливать вкладки” после его закрытия и открытия. В этом случае, если пользователь закроет браузер после первой отправки формы, не закрыв вкладку с результатом, а затем вновь откроет браузер, то браузер запросит повторно все страницы прошлой сессии, включая отправку формы.
Суть решения проблемы при использовании модели PRG заключается в том, что в ответ на отправку данных веб-формы, сервер не просто генерирует HTML-страницу с результатом, а возвращает браузеру заголовок перенаправления «Location» (при этом используются коды состояния HTTP 302, HTTP 303, иногда HTTP 301) ведущий на страницу с результатом, но уже вызываемым обычным методом GET, а не POST, и без данных веб-формы, конечно. При обновлении такой страницы с результатом нежелательных действий не произойдет, её даже можно использовать в качестве закладки в браузере.

Немного непонятно, при чем тут закрытие ссылок от индексации и отправка форм? Как все это взаимосвязано? Сейчас поясню.

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

Использование POST-запросов – идеальный способ для создания ссылок на определенные части сайта или интернет-магазина, при этом ссылки являются полностью недоступными для ботов поисковых систем.

Мы можем организовать какие – угодно фильтры в магазинах, при этом ссылки на страницы полученных данных не будут отъедать ссылочный бюджет страницы. Нет никакой нужды как то прятать или скрывать эти фильтры товаров, чтобы правильно организовать перелинковку и развесовку страниц.

3. Техническая реализация Post Redirect Get

Вместо ссылки мы создаем форму, которая передает на сервер данные с помощью метода POST. В качестве данных будет передаваться необходимый URL.

Как только форма отправит ссылку на сервер, мы сможем прочитать её и переадресовать на новый URL.

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

Модель Post-Redirect-Get

Таким образом мы заменяем классическую ссылку на кнопку, находящуюся в форме.

Поскольку ссылки, как таковой нет, то ссылочный бюджет страницы не тратится на неё, при этом мы не зависим от Java скриптов и данная модель закрытия ссылки от индексации работает в любом браузере.

Нам осталось только привести внешний вид кнопки формы к классическому виду обычной ссылки с помощью CSS.

3.1. Пример реализации Post Redirect Get метода в WordPress

Давайте реализуем на практике ссылки, которые никогда не будут индексироваться поисковыми системами. За основу возьмем код Тобби Келлера, немного модифицируем его и добавим следующий код в function.php активной темы WordPress.

Далее, используем в тексте редактируемой страницы шорткоды:

Верхний шорткод – для внешних ссылок. В нем прописываем полный URL внешнего ресурса и указываем что extern=”true”

Нижний шорткод – для внутренних ресурсов. В качестве URL нужно прописать слаг, и указываем что extern=”false”.

На выходе получаем ссылки в виде кнопок, вот такого вида:

Ссылки как кнопки

Теперь нам осталось прописать CSS код для класса .noLink и мы получаем 2 вот такие рабочие ссылки (можете нажимать):


Если мы заглянем в исходный код, то увидим там именно формы и никаких a href ссылок.

Исходный код для ссылок

Передаваемую методом POST ссылку при желании можно закодировать либо вообще передавать только индекс, выбирая на стороне сервера данные из базы по индексу и возвращая Redirect  с уже рабочим URL.

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

И напоследок, пример CSS:

4. Сфера применения закрытых от индексации ссылок

Создание ссылок методом Post Redirect Get снимает проблему с наличием на сайтах электронной коммерции однотипных страниц, генерируемых фильтрами. При этом мы можем довольно точно перераспределять веса (и важность) страниц.

Кроме того, используя PRG шаблоны следует закрыть все второстепенные страницы: “Контакты”, “О компании”, “пользовательские соглашения”, “политику конфиденциальности”, “порядок доставки и оплаты”, да и ту же “корзину” и другие маловажные страницы (с точки зрения SEO и перераспределения веса) из меню.

Обратите внимание, чтобы не было “висячих” страниц, у которых нет родителей, но при этом они присутствуют в карте сайта, необходимо все-же построить по одной ссылке на все эти вторичные страницы. Например в меню на главной оставить нормальную ссылку на страницу “О компании”, а уж оттуда организовать обычные ссылки на все вторичные страницы. При этом в меню для этих страниц использовать метод Post Redirect Get.

32
  Посмотрите еще

Комментарии

  1. Ольга  Ноябрь 26, 2018

    Добрый день!
    Спасибо огромное за статью!
    Не могли бы вы пояснить вот этот отрывок в конце: “Обратите внимание, чтобы не было “висячих” страниц, у которых нет родителей, но при этом они присутствуют в карте сайта, необходимо все-же построить по одной ссылке на все эти вторичные страницы. Например в меню на главной оставить нормальную ссылку на страницу “О компании”, а уж оттуда организовать обычные ссылки на все вторичные страницы. При этом в меню для этих страниц использовать метод Post Redirect Get.”
    «Нормальная ссылка» — это PRG-ссылка?
    «Обычная ссылка» — соответственно, ?

    ответ
    • DrMax  Ноябрь 26, 2018

      Ольга, день добрый.
      Нормальная – здесь обычный ( a href= )- т.е. самая обыкновенная ссылка.
      и обычная здесь тоже равно нормальной, т.е. тоже ( a href= )
      Суть идеи в следующем.
      1. Все вторичные страницы в меню делаем PRG
      2. На одну из вторичных страниц (например О компании), ставим обычную ссылку с главной (a href=). Можно, чтобы не мудрить с меню, поставить и из контента.
      3. В этой странице ставим ссылки прямые (a href) на все вторичные страницы из контента. Все равно там никто не знает о чем писать )))
      Так мы избегаем “Orphaned Pages” – страниц-сирот, страниц у которых нет “родителей” – т.е. тех страниц на которые не ведет ни одна ссылка. Но такие страницы-потеряшки, как правило, присутствуют в sitemap, что является грубой ошибкой для Google и снижает качество сайта.

      ответ
      • Ольга  Ноябрь 26, 2018

        Спасибо за ответ! Пойду менять

        ответ
      • demimurych  Ноябрь 26, 2018

        >Но такие страницы-потеряшки, как правило, присутствуют в sitemap, что является грубой ошибкой для Google и снижает качество сайта.

        Это глупость.
        sitemap это файл который как раз и существует для того, чтобы обьяснить поисковой машине где и что искать. Потому что способов взаимодействия с проектом миллион и маленькая тележка, и нет никаких гарантий что парсив только html код удастся найти все. О чем говорится и в документации. Именно для того и создается этот файл, чтобы обьяснить роботу где что брать. И нет никакого значения для проекта в целом, есть на такую страницу ссылка с другой страницы или нет.

        Единственный возможный негативный фактор, который существует ТОЛЬКО для этой страницы, это то, что поисковой машине непонятен контекст, а не весь проект в целом.
        Связанные страницы создают контекст, который может привлекать дополнительный трафик.

        только и всего.

        никакого понижения в качестве сайта за это нет.

        ответ
        • DrMax  Ноябрь 26, 2018

          Вполне возможно, но представьте что orphaned pages – 50% страниц. Недавно с таким сталкивался у одного товарища, когда из за ошибки в robots пагинация разделов была нарушена и половина карточек стало потеряшками. Гугл постепенно их выкинул из индекса. Трафик уменьшился. Что это, как не снижение качества сайта?
          И еще, сайтмап – это не панацея и не истина в последней инстанции. ПС полагаются больше на краулер а не на сайтмап, который может годами не обновляться, кстати чем грешат многие магазины.
          И такой вопрос – на кой плодить эти “потеряшки” если от них можно избавиться?
          Что за дикая такая фантазия загадить сайт непойми чем?

          ответ
  2. Ольга  Ноябрь 26, 2018

    Еще интересно, что делать со ссылками такого вида: ;+ХХХХХХХХХХХХ — по ним ведь тоже вес утекает!

    ответ
    • DrMax  Ноябрь 26, 2018

      Оставьте как есть)) Весь не утечет.
      Раньше я бы посоветовал для десктопной версии завернуть в скрипт, а для мобильной версии сайта – оставить как есть (чтобы правильно обработать нажатие по номеру на экране), но с приходом Mobile First Index такая суета с телефонами становится бессмысленной.

      ответ
  3. Сергей  Ноябрь 26, 2018

    “Но такие страницы-потеряшки, как правило, присутствуют в sitemap, что является грубой ошибкой для Google и снижает качество сайта.”

    Спасибо за статью. Пара вопросов.
    1. Откуда инфа что от Orphaned Pages снижают качество сайта?
    2. В предложении выше, какой сайтмап имеется ввиду? xml или html ?

    ответ
    • DrMax  Ноябрь 26, 2018

      Сергей, доброго дня.
      1. Эту ошибку (про страницы-сироты) я описывал уже довольно давно, методы обнаружения и устранения “потеряшек” описано в моей книжке про технический аудит.
      В целом это пошло из каких то далеких и дремучих обсуждений с гугловцами, припомнить которые нет возможности.
      2. xml, ибо если бы это была html- карта сайта, то ссылка на потеряшку существовала.

      ответ
  4. Денис  Ноябрь 26, 2018

    “используя PRG шаблоны следует закрыть все второстепенные страницы: Контакты, О компании, пользовательские соглашения, политику конфиденциальности, порядок доставки, оплаты, да и ту же корзину и другие маловажные страницы из меню.”

    Ты это серьезно? Пишешь про 15 лет опыта и такое задвигаешь читателям. Сейчас начитаются и пойдут сайты ломать.

    ответ
    • DrMax  Ноябрь 26, 2018

      Денис, в чем проблема избавиться от ссылок на малозначащие страницы?
      Зачем иметь рабочую ссылку, передающую вес, на всех страницах например “на контакты”?
      Если можно организовать доступ с любой страницы к тем же контактам, без передачи веса.

      Кстати, на основе PRG паттернов уже выпустили плагин для Магенты )))
      так что можете прикупить за 99 баксов.
      https://marketplace.magento.com/jajuma-prg.html
      Технологию не остановить.

      ответ
      • Денис  Ноябрь 26, 2018

        Контакты, по-твоему, малозначащая страница? У все все. Добавить нечего)

        ответ
        • DrMax  Ноябрь 26, 2018

          Денис, вы путаете 2 простые вещи, наверное в силу своей неопытности.
          Страница контактов важна для посетителей. Это так. Поэтому мы в меню на всех страницах поставим PRG ссылку. Посетитель с любой страницы сможет зайти и посмотреть контакты.
          Но для ПС страница контактов не важна в той мере, чтобы с каждой страницы передавать ей часть ссылочного бюджета.
          Никто в здравом уме не будет стремиться доминировать в органике своей страницей контактов.
          Никто не строит семантическое ядро и не закупает беки на страницу контактов.
          С точки зрения владельца сайта (и органики) – страница контактов маловажна с точки зрения SEO.
          Возьмите свой сайт, спарсите его лягушкой и посмотрите сколько внутренних ссылок идет на страницу “Контакты”.
          Судя по числу ссылочного – это одна из самых важных страниц на сайте (с точки зрения SEO а не usability). И это неверно.
          Не лучше ли ссылочный бюджет сайта перераспределить на более важные страницы, которые борются за ранжирование в органике, а не тратить его на страницу Контакты.
          И еще раз повторю: PRG ссылка не запрещает посетителю переходить на страницу контактов, а всего лишь не передает вес, экономя ссылочный бюджет страниц для более нужных вещей.

          Надеюсь более не придется объяснять прописные истины )))

          ответ
      • Денис Китайчук  Ноябрь 26, 2018

        Предлагаю проверить на рабочем домене. Если советы действительно ценные, как ты пишешь в этой статье, то выкатить их на рабочем домене с топовыми позициями, ничего не стоит. А даже наоборот. Еще лучше станет. Сделаешь кейс. У тебя наверняка есть хорошие проекты. Чтобы не советовать людям, а проверить на себе так сказать. А то знаешь, в интернетах такого понапишут.

        Или ты уже проверил на рабочем сайте? Буду благодарен, если поделишься.

        ответ
        • DrMax  Ноябрь 26, 2018

          Какие странные претензии у вас, Дмитрий.
          Рабочая реализация закрытия ссылок от индексации есть в статье?
          Пример приведен?
          Чего ж еще надо 😉

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

          ответ
  5. Aleksandr  Ноябрь 27, 2018

    Страницы, о которых писал Денис важны для коммерческих факторов в Яндексе. Их закрывать от индексации нельзя!

    ответ
    • DrMax  Ноябрь 27, 2018

      Александр, а где есть хоть слово, что они закрыты от индексации?
      По одной входящей внутренней ссылке они получают. Зачем больше?

      ответ
  6. Андрей WPMaster.KZ  Ноябрь 27, 2018

    Очень интересная тема. И у меня сразу вопрос. Чем этот метод будет лучше, чем например плагин для WordPress Easy Affiliate Links? Он вроде через скрипт клоатит ссылки. Как я понял, этот способ тоже ПС не распознают. Ну собственно вопрос выше. Очень интересно узнать чем лучше.

    ответ
    • DrMax  Ноябрь 27, 2018

      Андрей, при отключенных в браузере скриптах этот Easy Affiliate Links работать не будет.
      PRG ссылки будут работать в любом браузере 😉
      Кроме того, есть 100% уверенность в закрытии ссылки от ПС.
      Ну а в целом – это просто еще один способ. Относительно новый и редко используемый.

      ответ
      • Андрей WPMaster.KZ  Ноябрь 27, 2018

        Но это нужно будет каждую ссылку вручную прописывать. В смысле когда шорткод вставлять, придется ссылку вручную каждую вставлять. Никакой мысли нет автоматизировать чуток это дело? Я в яваскрипте вообще нулевой, может у вас уже какие-то наработки есть? Просто каждый раз вставлять этот шорткод вручную и ещё и каждый раз адрес вручную прописывать в этом шорткоде… задолбает. 🙂

        ответ
  7. vasja01010  Ноябрь 27, 2018

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

    ответ
  8. Алексей  Декабрь 4, 2018

    Не могли бы Вы привести пример кода “для мнительных”, чтобы в форме нн светилась ссылка?

    ответ
    • Алексей  Декабрь 4, 2018

      И еще момент, возможно ли сделать такую ссылку в виде картинки?

      ответ
      • DrMax  Декабрь 5, 2018

        Алексей, можно сделать, прикрутив action и соответствующий JS. Но это будет уже не PRG ссылка, а что то из разряда SEOhide.

        ответ
  9. alex trud  Декабрь 5, 2018

    Здравствуйте. А где скачать скрипт ?

    ответ
    • DrMax  Декабрь 5, 2018

      День добрый, Alex
      В тексте приведен. Ну или вот здесь взять https://pastebin.com/Xtvq4eND

      ответ
      • alex trud  Декабрь 6, 2018

        DrMax, у бы не стал Вас отрывать по мелочам, но раздел “3.1. Пример реализации Post Redirect Get метода в WordPress” с iframe-ами у меня не отображается и сайт pastebin.com не открывается.

        ответ
        • DrMax  Декабрь 6, 2018

          Заблокирован ))) Мне уже жалились на это. Ростелеком поди провайдер? Для хрома есть расширение FastProxy – рекомендую.

          ответ
          • alex trud  Декабрь 6, 2018

            Он самый. Зайду с другого!

            ответ
  10. АлаичЪ  Декабрь 6, 2018

    Просто чтоб ты знал, я добавил в пост и твой способ, он там числится под номером 6!
    Спасибо еще раз!

    ответ
    • DrMax  Декабрь 6, 2018

      Спасибо ))) Буду гордиться что попал на эту замечательную страницу.

      ответ
  11. Артём  Декабрь 8, 2018

    Приведите пример пожалуйста как это реализовать на DLE. Куда нужно пихать php код и в каком виде выводить форму в .tpl файле. Заранее спасибо за ответ =)

    ответ

Добавить комментарий