Добавить атрибут nofollow к ссылкам в подписи torrentpier 2

Started by ler on 2013-07-05 13:39 — 12 replies, 2135 views

#1
Посоветуйте как правильно сделать?

Spoiler content hidden.
#2
Все сводится к тому чтобы сделать так. Но тогда все ссылки будут в nofollow

    function make_url_clickable_callback ($m)
    {
        $max_len = 70;
        $href    = $m[1];
        $name    = (mb_strlen($href, 'UTF-8') > $max_len) ? mb_substr($href, 0, $max_len - 19) .'...'. mb_substr($href, -16) : $href;
 
        return "<a rel=\"nofollow\" href=\"$href\" class=\"postLink\">$name</a>";
    }

Как сделать чтобы только для $user_sig производилась замена?
#3
В viewtopic.php заменить на. Но тогда внутренние ссылки тоже будут с nofollow.... Как сделать только для внешних?

    else if ($user_sig)
    {
        $user_sig = bbcode2html($user_sig);
        $user_sig = str_replace('<a','<a rel="nofollow"',$user_sig);
    }
#4
сделай проверку если ссылка не относится к трекеру то добавляем nofollow.
#5
С регулярными выражениями совсем не дружу.
#6
Я уже бьюсь над этим кучу дней, никак не могу чтобы в этой функции function make_url_clickable_callback ($m) добавлялось к ссылкам rel=\"nofollow\", хоть и прописуешь.
#7
Ты про подпись имеешь ввиду? Или про любые ссылки внутри поста?
#8
Я у себя сделал такую функцию для ссылок внутри комментариев. Но проблема в том что если будет 2 ссылки внешняя и внутренняя, то nofollow не добавится. Надо форычить в массиве все ссылки поста и тогда будет гуд

Самое начало viewtopic.php
function url2nofollow($s){
if(!stristr($s,'http://mysite1.ru') AND !stristr($s,'http://mysite2.ru') AND !stristr($s,'http://mysite3.ru') AND !stristr($s,'http://mysite4.ru') AND !stristr($s,'http://mysite5.ru')){
$s = str_replace('<a','<a rel="nofollow"',$s);
return preg_replace('/(<a .*?href=\")([^>]+?)/i', '$1/out.php?url=$2', $s);
}
else return $s;
}


где то в конце
'MESSAGE' => url2nofollow($message),


код файла out.php
<?php
$url=(isset($_GET['url'])) ? $_GET['url'] : '/';
if($url!='/' && stripos($url, 'http://')===false) $url='http://'.$url;
header('Location: '.$url);
?>
#9
Вася, да я подпись в noindex закрыл. Мне надо чтобы в теле поста...
#10
Noindex нужен для того, чтобы не учитывать текст, но не ссылки. Гугл вообще не воспринимет этот тег
Например в noindex нужно заключать меню, чтобы не дублировался текст на всех страницах.
Самый оптимальный вариант это редирект + nofollow