Привет. Думаю многим эта задача покажется тривиальной, как, например, отличным специалистам по разработке сайтов в компании интернет-агентство «Webby», но для тех, кто ещё не очень хорошо знаком с регулярными выражениями и поиском подстрок в строке, сегодня предлагаем простое решение для PHP, которое позволяет найти все внешние ссылки на странице, и добавить nofollow.

Итак, сегодня мы рассмотрим это решение в 2-х разных вариантах: добавить nofollow на PHP и добавить nofollow на Javascript.

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

Немного о причинах: зачем добавить nofollow?

Эта задача из рода SEO-задач, когда на сайте размещаются внешние ссылки, на которые вы не хотите передавать вес своего сайта, например сайты-партнеры, разработчик сайта, или когда контентщик (специалист по наполнению) навставлял текст с внешними ссылками. Вот в таких случаях поможет наш код «добавить nofollow».

Как работает добавить nofollow?

Этот код работает на регулярных выражениях. Регулярное выражение находит все ссылки, которые не соответсвуют адресу вашего сайта, а затем PHP или Javascript уже заменяет эту ссылку на ссылку с nofollow.

Добавить nofollow на PHP

Как уже писали ранее, для того, чтобы добавить nofollow на PHP используется регулярное выражение.

В коде ниже нужно заменить в переменной $re site.com на адрес вашего сайта. Дальше в дело вступит код на PHP. Он заменит в тексте, который вы передадите в переменной $str все ссылки, которые на содержат адрес вашего сайта на такие же ссылки, но с атрибутом nofollow. В коде в примере использованы 3 ссылки, одна из них на «наш сайт». Вот как раз на наш сайт ссылка остаётся нетронутой.

добавить nofollow

$re = "/'?\\\"?((http|https):\\/\\/(?!site.com|site.com)[\\w\\.\\/\\-=?#]+)'?\\\"?/"; 
$str = "blbabla\n your site link\nblabalb"; 
$subst = "\"$1\" rel=\"nofollow\""; 
 
$result = preg_replace($re, $subst, $str);

После выполнения этого кода в переменной $result будет весь ваш текст, в котором ко всем внешним ссылкам добавлен атрибут nofollow.

Добавить nofollow на Javascript

В этом примере ниже используется такое же регулярное выражение, только обрабатывается оно на Javascript.

Как и в предыдущем примере, вам нужно передать в переменной str текст, в котором нужно добавить nofollow, а в переменную result будет записан результат с уже добавленным атрибутом nofollow.

var re = /'?\"?((http|https):\/\/(?!site.com|site.com)[\w\.\/\-=?#]+)'?\"?/g; 
var str = 'blbabla\n your site link\nblabalb';
var subst = '\"$1\" rel=\"nofollow\"'; 
 
var result = str.replace(re, subst);

Думаю, эти примеры помогут вам решить проблему с внешними ссылками на ваших сайтах.