所谓nofollow标签,就是让搜索引擎不抓取相应的页面。如果网站中存在大量的外部链接,或者是不重要的页面,就会降低网站的权重,添加nofollow标签就成为了非常重要的seo优化手段了。个人觉得最常用的nofollow标签就是rel=”nofollow”和rel=”external nofollow”,其实两者的意思是一样的,不过后者更规范些。
nofollow的添加方式有两种:1.用于meta元标签:<meta name=”robots” content=”nofollow” />,告诉爬虫该页面上所有链接都无需追踪。2.用于a标签:<a href=”login.aspx” rel=”nofollow”>登录</a>,告诉爬虫该页面无需追踪。
像wordpress博客评论上的站外链接,一般都添加了nofollow标签。这前我的一个博客,里面的网赚项目因为有太多的站外链接,我利用插件的方式直接给全站站外链接加上了nofollow标签(如果你也想给自己的wordpress博客加上nofollow,大家可以去看看这篇文章,wordpress网站必备的六大常用wordpress插件)。同样,nofollow标签对于discuz论坛也相当重要,今天我尝试给我的一个论坛所有帖子的站外链接添加了nofollow标签,感觉效果还不错。
怎么给dicuz论坛所有帖子的站外链接自动添加nofollow?这里介绍的主要是以代码的形式操作的,其实discuz应用中心也有相应的插件,但个人觉得还是代码的比较好用。我自己测试了一下,如果是帖子内部有外部链接,系统会自动添加nofollow标签,如果是其他地方有外部链接,像友情链接、评论链接等,系统就不会添加nofollow标签,大家放心使用。添加完后,如下图,是以rel=nofollow的形式添加的。

1、打开目录source/function/function_discuzcode.php文件,查找parseurl函数,对照以下代码进行修改: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>’;}}2.在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;}
注意上面的两段代码是需要同时修改的,我个人是直接把上面两段代码直接替换掉原来的代码的。大家在操作之前最好做好备份,避免程序错乱的现象。我个人使用的是discuzX3,至于其他的版本,大家自测吧。另外我发现很多discuz论坛都没有添加nofollow标签的,即使是一些非常牛的论坛。大家根据自身的需求来设置吧。