这个功能网络上面应该很常见了,可能很多人并不知道这个功能是干啥的,或者说为什么要用这个功能以及这个功能带来的好处。
我不是专业的,我也不喜欢百度,所以下面是来自维基百科的结果:
简单的说就是为了站点排名,保证爬虫只会在自己的站点爬,而不会跑到外链站点,当你的站点外链较多的时候,可能就会出现权重下降等等问题,毕竟可能存在垃圾站的嫌疑等等,同时这里还有一个名为:dofollow,说实话,我是真的不知道还有这个玩,同样来自维基百科的内容:
nofollow link 不允许搜索引擎机器人跟随链接。这意味着如果网站所有者使用nofollow属性连接回您,它不会传递链接值。只有人类才能关注这些链接。虽然有一段时间谷歌明确表示他们不考虑nofollow链接属性,但这些链接的权重实际上更少。尽管如此,将Nofollow链接属性用于那些链接是一个很好的做法,在那里你不想传递link-juice。而dofollow link 将会把连接值传去给被连接的网站。
了解了目的之后我们可以开始研究代码了。代码部分如下:
1 2 3 4 5 6 7 8 9 10 |
add_filter('the_content','web589_the_content_nofollow',999); function web589_the_content_nofollow($content){ preg_match_all('/href="(.*?)" rel="external nofollow" target = "_blank" /',$content,$matches); if($matches){ foreach($matches[1] as $val){ if( strpos($val,home_url())===false ) $content=str_replace("href=\"$val\"", "href=\"$val\" rel=\"external nofollow\" ",$content); } } return $content; } |
上面的代码通过正则来替换文章中的链接达到增加rel=\”external nofollow\”属性,而其中的判断依据是根据链接地址中是否包含本站地址来进行的,代码比较简介,也可以达到需求,但是这里需要注意的就是有些链接不包含本站链接地址,但是也没必要增加rel属性,比如电驴,磁力等等这类直接通过点击唤起应用的程序,所以如果你有这个需要,可以在正则匹配中增加下面的内容:
1 |
&& ! preg_match( '/(magnet|ed2k|thunder|Flashget|flashget|qqdl):/i', $val ) |
添加了上面的代码之后,完整代码如下:
1 2 3 4 5 6 7 8 9 10 |
add_filter('the_content','web589_the_content_nofollow',999); function web589_the_content_nofollow($content){ preg_match_all('/href="(.*?)" rel="external nofollow" target = "_blank" /',$content,$matches); if($matches){ foreach($matches[1] as $val){ if( strpos($val,home_url())===false && ! preg_match( '/(magnet|ed2k|thunder|Flashget|flashget|qqdl):/i', $val ) ) $content=str_replace("href=\"$val\"", "href=\"$val\" rel=\"external nofollow\" ",$content); } } return $content; } |
那么简单的说基本就是上面这些了,如果你感兴趣可以直接去实践一下。
如果你想要考虑的更加全面或者考虑到更多种可能的话,比如图片等等,通过正则匹配的方式一样可以达到。
除了这个方法,采用自建跳转页面也同样可以达到该目的,只不过就不是添加代码那么简单了。