很多 WordPress 的个人博主在建立博客后会经常写一些生活中的琐碎小事,但是那些文章是完全不会给网站从搜索引擎带来流量的,如果这些文章在站内展示率或出现率太高这样就会把需要权重的页面的权重给分散了。为了不让权重分散我们就只好用 robots.txt 来屏蔽该目录下的文章了。

有些博主不希望这类页面把站点的权重分散了,但是又想让搜索引擎收录这些页面那该怎么办呢?这样我们可以用 nofollow 属性来控制页面间权重的传递。

首先我们来看看百度官方对 nofollow 属性的解释:

最初,"Nofollow" 属性出现在网页级元标记中,用于指示搜索引擎不要追踪(即抓取)网页上的任何出站链接。

例如:

<meta name="robots" content="nofollow" />

而后,在将"Nofollow" 用于各个链接前,我们需要完成大量的工作(例如,将链接重定向至 robots.txt 中拦截的网址),以阻止蜘蛛追踪某网页上的各个链接。因此,我们创建了 rel 属性的"Nofollow" 属性值。这可让网站管理员更精确地进行控制:无需指示搜索引擎和漫游器不要追踪该网页的所有链接,只需轻松地指示蜘蛛不要抓取某特定链接即可。

例如:

<a href="signin.php" rel="nofollow">signin</a>

以上内容引自百度百科。

  从百度百科的解释来看我们就可以很好的利用 nofollow 属性来禁止蜘蛛在站内页面上来抓取某些链接,仅仅是在站内控制蜘蛛抓取链接,但爬虫依然会收录这些页面正好我们就可以利用这点来控制站内权重的分散了。虽然 nofollow 属性可以控制内页的抓取,但是一条一条的去改属性显然不现实。 WordPress 官方正好又提供了输出链接属性的函数。

function nofollow_cat_posts($text) {
global $post;
        if( in_category(1) ) { // 将 1 替换成你要输出 nofollow 链接的目录 id
                $text = stripslashes(wp_rel_nofollow($text));
        }
        return $text;
}
add_filter('the_content', 'nofollow_cat_posts');

只要将以上代码加入到你当前使用的主题的 functions.php 里就行了。