Оборачивать ссылки в noindex или nofollow иногда необходимо, когда у вас есть не полностью контролируемый контент. Это могут быть как комментарии, блоги, форумы так и профиль пользователя.

Для чего вообще оборачивать ссылки? Через внешние ссылки на вашем сайте утекает вес показателей вашего сайта, такие как ТИЦ и PR. У поисковой системы Яндекс это ТИЦ (тематический индекс цитирования), тут мы используем тэг <noindex>, а у Google PR (PageRank) - тут мы используем атрибут rel="nofollow". Таким образом ссылки пройдя через наш скрипт будут закрыты от индексации.

Ниже приведен код на PHP, который оборачивает все внешние ссылки. В функции filter есть параметр $urlme, он должен принять значение URL вашего сайта, чтобы ссылки на ваши же страницы не оборачивать.

function filter($matches) {
$urlme = "codemake.ru"; // Если ссылка содержит данный домен, то не оборачиваем. Указывайте свой сайт.

$url = explode(':', $matches[5]);
if (($url[0] == 'http') || ($url[0] == 'https')) {
$before = '<noindex>'.$matches[1].' rel="nofollow"';
$after = $matches[6].'</noindex>';

$domens = preg_split('/[\s,]+/', $urlme);
for ($i=0; $i<count($domens); $i++) {
if (stripos($matches[5], $domens[$i]) !== false)
break;
}

if ($class_list !='') {
$classes = preg_split('/[\s,]+/', $class_list);
for ($j=0; $j<count($classes); $j++) {
if (stripos($matches[4], $classes[$j]) !== false)
break;
}
}

if ($i >= count($domens) && $j >= count($classes)) {
$matches[1] = $before;
$matches[6] = $after;
}
}
return $matches[1].$matches[2].$matches[6];
}

function removeLinks($content) {
$content = preg_replace_callback('@(<a)(([^>]*class="([^>"]*)")?[^>]*href="([^>"]*)"[^>]*>.*?)(</a>)@i', "filter", $content);
$content = preg_replace_callback('@(<a)(([^>]*class=\'([^>\']*)\')?[^>]*href=\'([^>\']*)\'[^>]*>.*?)(</a>)@i', "filter", $content);
return $content;
}

// Использование. Где $message - входящий контент
echo removeLinks($message);
(Visited 313 times, 1 visits today)