由于百度不支持nofollow,我的博客的上千流量基本都是从Google过来的。所以一直很想加一个WP评论链接跳转的功能,在很多地方都看到了这个修改方法,不知道我的主题怎么了,不管用插件还是代码,都无法实现这个功能,今天终于让我找到原因了。特奉上修改方法。

WordPress 评论者链接跳转的原因(引自水煮鱼博客

国内垃圾留言横行,作为国内最大的搜索引擎百度对此负有不可推卸的责任,由于百度不支持 rel="nofollow" 属性,造成了 Spammer 恣意妄为,肆意到处留言,根据 Akismet 这个防垃圾留言插件的统计,2008 年12月一个月就收到 4000 多条垃圾留言。并且如果如果这些外链很多都是链接到垃圾站,会让导致博客在搜索引擎(主要是百度,Google nofollow 到垃圾网站也是没事的)中的降权,直接导致排名下降。

但是百度死不悔改,并无打算遵守这个事实标准,修复这个漏洞。当你看到自己博客的留言区一大堆链接是起重机,减肥这类的广告是什么样的看法,是的这些都是我们不愿意看到,我们只想拥有一个干净的博客环境,所以我开发了一个 WordPress 插件:Comments Link Redirect,勇敢对抗 Spammer 和百度,彻底解决 WordPress 中这个问题,使得 Spammer 即使成功留言了,也不会被搜索引擎索引。

实现 WordPress 评论者链接跳转方法有二,你可以直接用水煮鱼的 Comments Link Redirect 插件,另外一个就是代码版了。

Comments Link Redirect 插件

1.点击这里下载 Comments Link Redirect 插件。

2.安装激活插件,用记事本打开 wordpress 根目录下的 robots.txt 文件,添加如下代码:

Disallow: /?r=*

不用插件实现重定向跳转

1.找到你使用的主题文件中的 functions.php ,将以下代码添加到该文件中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//comments link redirect
add_filter('get_comment_author_link', 'add_redirect_comment_link', 5);
add_filter('comment_text', 'add_redirect_comment_link', 99);
function add_redirect_comment_link($text = ''){
    $text=str_replace('href="', 'href="'.get_option('home').'/?r=', $text);
    $text=str_replace("href='", "href='".get_option('home')."/?r=", $text);
    return $text;
}
add_action('init', 'redirect_comment_link');
function redirect_comment_link(){
    $redirect = $_GET['r'];
    if($redirect){
        if(strpos($_SERVER['HTTP_REFERER'],get_option('home')) !== false){
            header("Location: $redirect");
            exit;
        }
        else {
            header("Location: http://www.yzznl.cn/");
            exit;
        }
    }
}

2.用记事本打开 WordPress 根目录下的 robots.txt 文件,添加如下代码:

Disallow: /?r=*

cos-html-cache 静态化插件和 Comments Link Redirect 插件冲突的解决方法

这点是在万戈 那里看来的,说是如果使用了 cos-html-cache 静态化插件,会导致 Comments Link Redirect 插件无法正常使用,yanxc 给出了一个解决方案,专门针对使用了 cos-html-cache 静态化插件的朋友。

方法同样是把以下代码复制到你使用的主题文件中的 functions.php 文件里面,代替上面提供的代码。

1
2
3
4
5
6
7
8
9
//comments link redirect
add_filter('get_comment_author_link', 'add_redirect_comment_author_link', 5);
add_filter('comment_text', 'add_redirect_comment_text', 99);
function add_redirect_comment_author_link($text = ''){
$text=str_replace("href=",'href="javascript:window.location=',ereg_replace('href='[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]'',"0"", $text));return $text;
}
function add_redirect_comment_text($text = ''){
$text=str_replace("href=","href='javascript:window.location=",ereg_replace('href="[[:alpha:]]+://[^<>[:space:]]+[[:alnum:]/]"',"0'", $text));return $text;
}

然后再修改 robots.txt 文件即可。

某些主题不能实现评论者链接重定向跳转的解决方法

某些主题不支持水煮鱼的插件,比如 iNove 和 Forece 的主题都不可以,解决办法很简单,打开主题目录下的 functions.php 文件,查找类似如下代码:

1
<a id="commentauthor-<?php comment_ID() ?>" class="url" href="<?php comment_author_url() ?>" rel="external nofollow">

修改为

1
<a target="_blank" id="commentauthor-<?php comment_ID() ?>" class="url" href="http://www.forece.net/?r=<?php comment_author_url() ?>" rel="external nofollow">

改完代码后,再使用上面提供的基于插件或修改代码的方法即可完美实现重定向跳转的效果。

这两种方法的最终目的其实都是在和垃圾评论做战,虽然不能通过此方法杜绝垃圾评论,但如果那些发垃圾评论的人得不到丝毫的权重和价值,对他们来说也就没有什么意义了。