Оборачиваем все ссылки в noindex/nofollow
Оборачивать ссылки в noindex/nofollow иногда необходимо, когда у вас есть не полностью контролируемый контент. Это могут быть как комментарии, блоги, форумы так и профиль пользователя.
Для чего вообще оборачивать ссылки? Через внешние ссылки на вашем сайте утекает вес показателей вашего сайта, такие как ТИЦ и PR. У поисковой системы Яндекс это ТИЦ (тематический индекс цитирования), тут мы используем тэг <noindex>, а у Google PR (PageRank) - тут мы используем атрибут rel="nofollow". Таким образом ссылки пройдя через наш скрипт будут закрыты от индексации.
Ниже приведен код, который оборачивает все внешние ссылки. В функции filter есть параметр $urlme, он должен принять значение URL вашего сайта, чтобы ссылки на ваши же страницы не оборачивать.
function filter($matches) {
$urlme = "makecode.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);

(3 votes, average: 4,33 из 5)