WordPress 评论者链接实现重定向跳转的方法

由于百度不支持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">

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

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

相关评论

  1. 小林博客说道:

    跳转方式最好的,就是卢松松的了,因为他的博客留言评论多啊,对排名却没有什么影响。

  2. […] 本文转自:Forece Blog 本文固定链接:http://www.forece.net/post/2538.htm […]

  3. 午夜客说道:

    手工删除来的干净!

  4. 碧雅阁说道:

    我的也换了,不过用的不是你的方法,连修改的文件都不一样。我那个加密跳转之后301定向到评论者博客。呵呵

  5. 我就是代码的
    话说支持很好 呵呵
    貌似就文章中代码

  6. 严重浪漫说道:

    还好,俺的垃圾评论不多

  7. Tuixy说道:

    都是为了赚点钱才到处发,生活是无奈的!

  8. 龙凤双喜说道:

    还是插件好用些

  9. 老饕说道:

    百度支持no-follow了~~百度支持123、两种写法的nofollow,带有nofollow属性的url,不会传递权值。

    • FORECE说道:

      刚才 Google 了一下,原来百度在4月就说支持 nofollow 了。月光博客也写了。那就这样吧。不弄跳转了。

  10. 我心飞翔说道:

    垃圾留言,垃圾邮件,垃圾帖子,已经成就了很多就业者。。。

  11. 阿修说道:

    这么严重啊,我可得注意了。。

  12. zwwooooo说道:

    垃圾泛滥,越来越多

  13. 山头人说道:

    我辛苦点。手动删除吧。目前还不是很多垃圾,还能应付

  14. 老张博客说道:

    把这个方法用上。。。。。

  15. 万戈说道:

    这个方法我也有在用,并打算植入到新主题中

  16. 囧啊囧说道:

    垃圾评论是没意思了,那不是垃圾评论的怎么办呢?我都是手动检查Akismet过滤的评论。

  17. 卢松松说道:

    这样的跳转方式貌似不太好吧

  18. 刹车整流器说道:

    沙发都快凉了、、、过来暖暖、、

相关评论:

您的电子邮箱地址不会被公开。 必填项已用*标注