Запретить индексацию внешних ссылок в WordPress без плагина

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

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

добавить nofollow

Как бы ни было на самом деле, вы сами должны «попробовать обе и решить, на какой стороне вы» (реклама Твикс).

Можете закрывать, можете открывать, а быть может вы выберете 3-й вариант, который рекомендуют поисковики: добавлять ссылкам nofollow только для сомнительных ресурсов.

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

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

Закрыть все ссылки от индексации в nofollow

Итак, для автоматического добавления всем ссылкам атрибута rel=”nofollow” в WordPress, запрещающего индексацию ссылок, а также предотвращающего передачу веса тИЦ и PR, следует использовать код:

function nofollow_ext($matches){
 $a = $matches[0];
 $site_url = site_url();
 if (strpos($a, 'rel') === false){
 $a = preg_replace("%(href=\S(?!$site_url))%i", 'rel="nofollow" $1', $a);
 } elseif (preg_match("%href=\S(?!$site_url)%i", $a)){
 $a = preg_replace('/rel=S(?!nofollow)\S*/i', 'rel="nofollow"', $a);
 }
 return $a;
}
 
function nofollow_ext_links($content) {
 return preg_replace_callback('/<a[^>]+/', 'nofollow_ext', $content);
}
 
add_filter('the_content', 'nofollow_ext_links');

Скопируйте эту функцию и добавьте в файл functions.php, расположенный в папке с вашей Вордпресс темой.

Если на вашем сайте или блоге уже применялись теги Nofollow вручную, то данный код не станет добавлять их повторно.

В случае необходимости разрешить индексировать поисковым системам какую-либо ссылку, нужно просто добавить любой из доступных атрибутов тега rel. С ними вы можете ознакомиться, перейдя по ссылке: http://htmlbook.ru/html/a/rel.

Например, можно сделать так: rel=”details”.

Вот так просто можно добавить всем ссылкам WordPress сайта nofollow. Это особенно актуально для ресурсов с большим количеством страниц, где простановка тега вручную отнимет много времени.

Комментарии к “Запретить индексацию внешних ссылок в WordPress без плагина

  1. Здравствуйте! Вы меня удивили! За последние несколько месяцев вы первый, который советует закрывать внешние ссылки с помощью атрибута nofollow.
    Ведь появился новый тренд мнение, что такие ссылки передают вес полюбому и поэтому все советуют закрывать ссылки с помощью скриптов js. Лично я не согласен с таким мнением. А кокое ваше мнение по этому поводу?

    1. Здравствуйте, Игорь. Совет этот уже очень давний. Блоггеры делятся на 2 лагеря: Те, кто поддерживают такую позицию (пример: http://ktonanovenkogo.ru) и те, кто не поддерживают (http://devaka.ru).
      Рекомендации поисковых систем насчет использования этого атрибута пока неизменны. Конечно же на 100% доверять поисковикам нельзя, так как они советуют одно, а на деле все может быть иначе. Профессия СЕОшников и заключается в распознании подобных нюансов.
      Но в этом вопросе я придерживаюсь мнения, что nofollow следует использовать.
      А по поводу js, так он тоже уже учитывается поисковиками. А раз так, то первый вариант, как мне кажется, резоннее.

  2. Вставил код после:

    <?php
    /***** Theme setup *****/

    и сайт у меня упал. Может код надо вставлять в какое-то конкретное место? Буду признателен за совет.

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

        1. Странно. Значит, что где-то возник конфликт. Попробуйте по другому:

          add_filter('the_content', 'auto_nofollow');

          function auto_nofollow($content) {
          //return stripslashes(wp_rel_nofollow($content));

          return preg_replace_callback('/<a>]+/', 'auto_nofollow_callback', $content);
          }

          function auto_nofollow_callback($matches) {
          $link = $matches[0];
          $site_link = get_bloginfo('url');

          if (strpos($link, 'rel') === false) {
          $link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link);
          } elseif (preg_match("%href=S(?!$site_link)%i", $link)) {
          $link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link);
          }
          return $link;
          }

  3. Синтаксическя ошибка
    $a = preg_replace(«%(target=»_blank» href=\S(?!$site_url))%i», ‘rel=»nofollow» $1’, $a);
    } elseif (preg_match(«%target=»_blank» href=\S(?!$site_url)%i», $a)){
    двойные кавычки возле «_blank» не экранированные 🙂

    1. Тьфу ты. Добавил функцию, что бы автоматически вставлялся target=_blank во все ссылки. Этого бланка тут вообще не должно быть. Уж точно не в pattern.
      Спасибо. исправил. Люди жалуются, а я руками развожу 🙂

      1. Код вставил в конце кода functions.php перед ?>
        Все работает великолепно!
        Большое вам спасибо!

  4. Так, только у меня теперь закрылись от индексирования и внутренние ссылки. А это нехорошо. Может есть решение?

    1. Я поправил код в самой статье. Используйте его, все должно работать.

      1. Да, код работает, но внутренние ссылки — со страницы сайта на главную — у меня зачеркнуты. По крайней мере, так показывает RDS bar.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *