Как закрыть от индексации внешнюю ссылку?

Обновлено: 07.04.2021 26005

Закрываем автоматически все внешние ссылки на сайте с помощью атрибутов: nofollow noreferrer noopener sponsored ugc.

Как правильно закрыть внешние ссылки от индексации?

Время прочтения:

Под внешними ссылками подразумеваем исходящие ссылки со страниц нашего сайта на сторонние ресурсы.

UTM-метки для партнерских ссылок

Решил посмотреть с помощью каких UTM-меток размечают тип рекламы, нашел - utm_medium.

В этом параметре есть распространённые значения:

  • organic - органический трафик (SEO);
  • cpc - контекстная реклама (cost per click);
  • email - трафик с почтовых рассылок;
  • social - переходы с социальных сетей;
  • banner - медийная реклама;
  • cpa - прочие переходы с оплатой за действия (cost per action).

Но нашел ещё одно наиболее подходящее значение:

  • affiliate - разметка ссылок для CPA-сетей на подобии Admitad, Auctionpay и т.п.

В итоге у ссылки необходимо добавить параметр:

utm_medium=affiliate

Атрибут rel sponsored

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

Подробнее об использовании платных ссылок в Google.

Как сделать реферальную ссылку?

Я решил объединить 2 верхних метода: партнерские ссылки размечать атрибутом rel=sponsored + прописывать GET-параметры utm_medium=affiliate в URL.

Пример такой ссылки:

<a rel="nofollow noreferrer noopener sponsored" target="_blank" title="Партнерская программа для вебмастеров" href="https://timeweb.com/ru/partners/webmasters/?i=46425&amp;utm_medium=affiliate">партнерской программе</a>

Атрибут rel ugc

Для ссылок, которые ведут на контент, созданный пользователями, например, комментарии или записи форумов, рекомендуется применять атрибут ugc.

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

Атрибут rel nofollow

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

Подробнее про этот атрибут и эксперименты с ним вы можете почитать в моей статье.

Атрибут rel noreferrer

Атрибут является частью спецификации HTML5 и позволяет не передавать HTTP-заголовки по ссылке, что повышает конфиденциальность в сети и безопасность самих пользователей.

Атрибут rel noopener

Обязательный атрибут для ссылок, которые открываются в новой вкладке - используют target="_blank".

Повышается производительность и безопасность перехода: предотвращается доступ к window.opener и к кросс-потокам.

Атрибут target="_blank"

Данный атрибут ссылки (тег A), указывает на то, что следует загружать страницу в новом окне браузера.

Закрываем автоматически внешние ссылки

Плагин в ModX Revo: extLinkRedirector

Заходим в "Пакеты", потом "Установщик":

Установка плагина в Modx Revo

Находим плагин "extLinkRedirector" и устанавливаем его в пару кликов:

Подключаем плагин в Модикс

После установки находим сам плагин и вставляем в него мой допиленный код:

Поиск плагина в ModX Revo

<?php
if ($modx->event->name == 'OnWebPagePrerender') {

require_once $modx->getOption('extlinkredirector.core_path',null,$modx->getOption('core_path').'components/extlinkredirector/model/').'extlinkredirector.class.php';
$extLinkRedirector = new extLinkRedirector($modx,$scriptProperties);

$output = &$modx->resource->_output;
$site_url = $modx->getOption('site_url');
preg_match_all('#<a(?:.*?)href(?:\s*)=(?:\s*)[\"\']((https?|ftp):\/\/\S*?)[\"\']([^>]*)>(.*?)<\/a>#im',$output,$res);
for ($i = 0; $i < count($res[0]); $i++) {
if(stripos($res[1][$i],$site_url) !== 0) {
if($extLinkRedirector->stopWords($res[1][$i]) == false && $extLinkRedirector->stopClasses($res[0][$i]) == false){
if (!stristr($res[0][$i], 'javascript:')) {
$link = $res[0][$i];
if ((boolean)$scriptProperties['use_redirect']) {
$redirectUrl = $modx->makeUrl($extLinkRedirector->config['redirect_page_id'],'','','full');
$link = substr_replace($link, $redirectUrl.'?url='.$res[1][$i], strpos($link, $res[1][$i]), strlen($res[1][$i]));
}
if ((boolean)$extLinkRedirector->config['add_blank']) {
$link = preg_replace('/target=["\'][^\'".]+["\']/', '', $link);
$link = str_replace('<a','<a target="_blank"',$link);
}
if ((boolean)$extLinkRedirector->config['add_nofollow']) {
$link = preg_replace('/rel=["\'][^\'".]+["\']/', '', $link);
$sponsored = '';
if(stristr($link, 'utm_medium=affiliate') !== FALSE) {
$sponsored = 'sponsored';
}
$link = str_replace('<a','<a rel="nofollow noreferrer noopener '.$sponsored.'"',$link);
}
if ((boolean)$extLinkRedirector->config['add_noindex']) {
$link = str_replace('</a>','</a><!--/noindex-->',$link);
$link = str_replace('<a','<!--noindex--><a',$link);
}
$output = str_replace($res[0][$i],$link,$output);
}
}
}
}
}

Вставляем код в плагин ModX

Тоже самое только на простом PHP:

function nofollowlinks($output){
preg_match_all('#<a(?:.*?)href(?:\s*)=(?:\s*)[\"\']((https?|ftp):\/\/\S*?)[\"\']([^>]*)>(.*?)<\/a>#im',$output,$res);
for ($i = 0; $i < count($res[0]); $i++) {
if (!stristr($res[0][$i], 'javascript:')) {
if (!stristr($res[0][$i], 'site.ru')) {
$link = $res[0][$i];
$link = preg_replace('/target=["\'][^\'".]+["\']/', '', $link);
$link = str_replace('<a','<a target="_blank"',$link);
$link = preg_replace('/rel=["\'][^\'".]+["\']/', '', $link);
$sponsored = '';
if(stristr($link, 'utm_medium=affiliate') !== FALSE) {
$sponsored = 'sponsored';
}
$link = str_replace('<a','<a rel="nofollow noreferrer noopener '.$sponsored.'"',$link);
$output = str_replace($res[0][$i],$link,$output);
}
}
}
return $output;
}

Где site.ru - ваш сайт (хост).

Допустим в переменной $content - информация содержит внешние ссылки.

Перед выводом, для обработки используем функцию, приведенную выше: nofollowlinks($content).

В итоге: ссылки будут закрыты.

Что делает скрипт?

Если внешняя ссылка и не относятся к нашему сайту (site.ru) добавляем принудительно открытие в новом окне (target="_blank"), а также проставляем атрибуты rel.

Для всех внешних ссылок ставил комбо по умолчанию: nofollow noreferrer noopener, но если ссылка имеет UTM-метку utm_medium=affiliate, то также добавляем значение sponsored в атрибут rel.

Я автоматом так все внешние ссылки закрываю - спам деятельность теряет свою актуальность.

Зная теоретические основы и для чего нужны данные атрибуты, смело внедряйте такие скрипты и настраивайте по себя нужные параметры.

Связаться в Telegram

Рейтинг: 5/5
4 голосов

Следующие страницы вас также могут заинтересовать:

Обновлено: 07.04.2021