MODX. Запрет индексации ВСЕХ внешних ссылок на сайте.

Оглавление

Для вас наверное не секрет, что мы должны избегать лишних внешних ссылок, что бы не передавать “ссылочный вес” другим сайтам, обычно SEO оптимизаторы просят обозначать внешние ссылки.

Для Яндекса:

<!--noindex-->...<!--/noindex-->
<noindex>...</noindex>
Тег <noindex> в данном случае является частью DOM, участвует в CSS селекторах и т.д. по возможности используйте вариант комментария, если сайт не очищает DOM от комментариев.

Для Google:

<a rel="nofollow noreferrer noopener"></a>

Так же все внешние ссылки должны иметь атрибут target="_blank"

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

  • Создадим новый плагин, название произвольное, например outsideLinks

  • В разделе Системные события поставим галочку напротив OnWebPagePrerender

  • Скопируем содержимое плагина и сохраним

<?php
if ($modx->event->name == 'OnWebPagePrerender')
{
    $content = $output = $modx->resource->_output;
    // Собираем все ссылки на странице, по шаблону, в массив $matches
    preg_match_all(
        "/<a [^>]*?href=[\"\'][h\'][t\'][t\'][p\'](.*?)[\"\'][^>]*>.*?<\/a>/im",
        // /<a [^>]*?href=[\"\'][h\'][t\'][t\'][p\'](.*?)[\"\'][^>]*>.*?<\/a>/im
        // /<a [^>]*?href=[\"\'](.*?)[\"\'][^>]*>.*?<\/a>/im
        $content,
        $matches
    );
    if (!empty($matches[0]))
    {
        foreach ($matches[0] as $key => $tag) {
            // Добавляем атрибут "nofollow noreferrer noopener" в начало тега "а"
            $new_tag = preg_replace("/^<a/i", '<a rel="nofollow noreferrer noopener"', $tag);
            // Добавляем атрибут "_blank" в начало тега "а"
            $new_tag = str_replace('<a','<a target="_blank"',$new_tag);
            // Добавляем тэг "<!--/noindex-->" после тега "а"
            $new_tag = str_replace('</a>','</a><!--/noindex-->',$new_tag);
            // Добавляем атрибут "<!--noindex-->" перед тегом "а"
            $new_tag = str_replace('<a','<!--noindex--><a',$new_tag);
            $content = str_replace($tag, $new_tag, $content);
        }
        // Устанавливаем новый контент для вывода документа
        $output = $modx->resource->_output = $content;
    }
} ?>