Под внешними ссылками подразумеваем исходящие ссылки со страниц нашего сайта на сторонние ресурсы.
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&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
Заходим в "Пакеты", потом "Установщик":

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

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

<?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);
}
}
}
}
}

Тоже самое только на простом 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.
Я автоматом так все внешние ссылки закрываю - спам деятельность теряет свою актуальность.
Зная теоретические основы и для чего нужны данные атрибуты, смело внедряйте такие скрипты и настраивайте по себя нужные параметры.
Следующие страницы вас также могут заинтересовать:
- Робототехника
- Аутсорсинг: что это такое и как он может помочь вашему бизнесу?
- SEO-продвижение образовательного сайта: 7 лет — от старого HTML до AI Search
- Домашние антропоморфные роботы: помощники, компаньоны и будущее быта
- Сравнение Интентного кластеризатора и Key Collector
Обновлено: 07.04.2021