为Discuz!新、老帖子外部链接自动添加rel=”nofollow”的方法

为Discuz!新、老帖子外部链接自动添加rel=”nofollow”的方法

SEO搜索优化工作是一系列小事组成的,看似是小事,影响的却是网站权重大事,所以不能怕麻烦,要有耐心一点一点去解决。

比如Discuz!论坛网站,特点就是广大会员可以自由发帖,帖子内不免会有外部链接,不可能一个一个去人工修改添加rel=”nofollow”,而且如果老帖子过多,手工去修也非常不现实,所以最好能够自动为新帖子、老帖子内的外链自动添加rel=”nofollow”。

经过实测证实下面这个方法有效,而且会将之前的老帖子内容的外部链接全部自动添加上rel=”nofollow”,只对外部链接添加,自己本网站的链接不会添加。

测试用的Discuz!版本是3.4,实际上需要修改的function_discuzcode.php文件并不是每次升级都大改,所以推断Discuz!3.3、3.2、3.1、3.0、2.5甚至之前的老版Discuz!,应该都适用这个方法。

具体修改方法如下:

为Discuz!新、老帖子外部链接自动添加rel="nofollow"的方法

上图两处涂为红色的两个地方,第一个是添加的,第二个是修改+添加。

第一步, 找到source/function/function_discuzcode.php文件,用记事本或者其他代码编辑软件打开,查找parseurl函数,大约在329行,对照以下代码进行修改,下面代码是改好的了:

function parseurl($url, $text, $scheme) {
    global $_G;
    if(!$url && preg_match(“/((https?|ftp|gopher|news|telnet|rtsp|mms|callto|bctp|thunder|qqdl|synacast){1}:\/\/|www\.)[^\[\”‘]+/i”, trim($text), $matches)) {
        $url = $matches[0];
        $length = 65;
        if(strlen($url) > $length) {
            $text = substr($url, 0, intval($length * 0.5)).’ … ‘.substr($url, – intval($length * 0.3));
        }
        $url = nofollow($url);
        return ‘<a href=”‘.(substr(strtolower($url), 0, 4) == ‘www.’ ? ‘http://’.$url : $url).'” target=”_blank”>’.$text.'</a>’;
    } else {
        $url = substr($url, 1);
        if(substr(strtolower($url), 0, 4) == ‘www.’) {
            $url = ‘http://’.$url;
        }
        $url = !$scheme ? $_G[‘siteurl’].$url : $url;
        return ‘<a href=”‘.nofollow($url).'” target=”_blank”>’.$text.'</a>’;
    }
}

上面共修改两处,对照上图需要修改那一段涂红色的两个地方,第一处,添加一行;第二次,添加和修改,原代码为:

<a href=”‘.$url.'”

第二步,在parseurl函数后面新增nofollow函数,代码如下:

function nofollow($url = ”)
{
    $temp = array();
    if( ! empty($url))
    {
        $temp = parse_url($url);
        if(isset($temp[‘host’]) && $temp[‘host’] != $_SERVER[‘HTTP_HOST’])
        {
            $url .= ‘” rel=”nofollow”‘;
        }
    }
    unset($temp);
    return $url;
}

修改完成,将文件上传到主机,代替原文件。

去打开一个包含外链的老帖子,会发现已经自动添加了rel=”nofollow”。

为Discuz!新、老帖子外部链接自动添加rel="nofollow"的方法

©禁止转载原文 欢迎分享网址 侵权必究:『白云居』 » 为Discuz!新、老帖子外部链接自动添加rel=”nofollow”的方法

赞 (0)