Не нравятся результаты поиска? Попробуйте другой поиск!
dle-faq.ru Сниппеты PHP Сниппеты Хак Rel Nofollow с помощью регулярного выражения

Хак Rel Nofollow с помощью регулярного выражения


     09.03.2015    PHP Сниппеты    1784

Хак можно изменить для любой cms, но в данном примере код для cms DLE. Поиск и замена всех внешних ссылок на лету по указанному шаблону, с добавлением атрибута rel=nofollow а также шифрованием ссылок в формат base64 и rawurlencode.
Открываем /index.php, ищем
echo $tpl->result['main'];
Выше добавляем нашу строку поиска и замены ссылок:
$tpl->result['main'] = preg_replace ( '~(<a(?!.*?class=\"trustlink\")(?>.*?href))=(["\'])([a-z0-9]++://(?![a-z0-9\.]*?'.$_SERVER['HTTP_HOST'].').*?)\2~eSi', '"\1=\"/goto/".rawurlencode(base64_encode(mb_convert_encoding( "$3", "UTF-8", "windows-1251" )))."/\" rel=\"nofollow\"";', $tpl->result['main'] );

Далее нужно создать правила перенаправления для веб-сервера.
Правила для htaccess:
RewriteRule ^goto/(.*)/$ /engine/go.php?url=$1 [L]
Правила для nginx:
rewrite "^/goto/(.*)/$" /engine/go.php?url=$1 last;

Адрес на котором будет запущен скрипт (ваш домен) является исключением , т.е ссылки не будут заменяться.
Для исключения ссылки от замены добавьте к ссылке class="trustlink"

Плюсы данного хака - это скорость работы, т.к задействована всего одна строчка кода. Исключения class="trustlink", для удобства регистрации на биржах ссылок.
Подходит для любой cms, необходимо только заменить переменную источника поиска и страницу перенаправления url.

Минусы. Ограниченный функционал, отсутствие черных и белых списков, отсутствие исходящих страниц с ожиданием перенаправления, если сравнивать например с модулем dude smart leech,

Получилась неплохая альтернатива, с простым внедрением в код любого php скрипта.

Пример использования кода, ссылка на google.ru будет иметь вид
<a href="/goto/aHR0cDovL2dvb2dsZS5ydQ%3D%3D/" rel="nofollow" target="_blank" style="text-decoration: line-through !important;">google.ru</a>
Чтобы комментировать - войдите или зарегистрируйтесь на сайте