WordPress去除带replytocom参数链接,防止收录重复内容

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
文章目录

     在WordPress的评论列表区域,大多数主题的回复按钮链接是类似这样的:
     链接A:http://a.com/a.html?replytocom=12#respond

     其实上面的链接跟没有参数的链接是同一个页面,两个链接的内容其实是完全一样的:
     链接B:http://a.com/a.html

评论列表

     这样就会导致一个后果,链接A被蜘蛛抓取后,会导致搜索引擎重复收录相同内容的页面,影响SEO。为了不被搜索引擎惩罚,保护自身利益,我们应该尽量避免这样的问题出现。下面我提供三种方法,供大家参考:

禁止蜘蛛抓取replytocom

     在网站根目录下的robots.txt中,加入以下规则,禁止搜索引擎抓取含有 ?replytocom= 的链接:

User-agent: *
Disallow: /*?replytocom=

给链接添加nofollow

     此方法效果跟上面的差不多。我们可以在当前主题的functions.php中添加以下PHP代码,这样就给回复按钮链接添加rel="nofollow"属性,同样可以告诉搜索引擎不要抓取此链接:

add_filter('comment_reply_link', 'add_nofollow', 420, 4);

function add_nofollow($link, $args, $comment, $post){
  return str_replace("href=", "rel='nofollow' href=", $link);
}

直接删除replytocom链接

     有些搜索引擎并不遵守robots.txt规则或nofollow属性,会照样抓取replytocom链接。我们可以在当前主题的functions.php中添加以下PHP代码,这样链接A就会直接被替换成了#comment-评论id,搜索引擎会自动忽略带 # 号的链接,并且你的网站再也不存在replytocom链接了:

add_filter('comment_reply_link', 'add_nofollow', 420, 4);

function add_nofollow($link, $args, $comment, $post){
  return preg_replace( '/href=\'(.*(\?|&)replytocom=(\d+)#respond)/', 'href=\'#comment-$3', $link );
}

     如果你不喜欢 #comment-评论id 这样的链接,可以将第4行代码中的 #comment-$3 改成你自己喜欢的链接。

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-remove-replytocom-urls.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

27 条留言

点此留言
  1. 斌果 斌果

    使用canonical标签呗

  2. 优搜 优搜

    我的评论也被百度收录了,而且还不止一条..现在去试试。。顺便说句,我是沙发,哈哈

  3. pipi

    这两天抽空又把楼主的博客看了一遍,收获多多~

  4. 我们的电台 我们的电台

    试试看看怎么样。

  5. Savander

    第二种方法会导致嵌套回复失效

    • Ludou

      @Savander 使用WordPress官方主题twentytwelve测试了一下,嵌套回复正常。
      不知道你的嵌套回复是插件实现的,还是主题自带的功能。

      • Savander

        @Ludou 是按照这里的代码修改的:https://www.ludou.org/create-wordpress-themes-comments.html

        • Ludou

          @Savander 这篇教程的代码未使用嵌套评论,谢谢。

  6. 创意生活馆 创意生活馆

    评论也能被收录?似乎没见收录过我的评论,不过我的评论确实很少很少,呵呵

  7. 麦田一根葱 麦田一根葱

    饱受诟病啊

  8. 才子城 才子城

    使用canonical标签也可以解决这个问题,用Disallow也可以解决。关键是看自己喜欢用哪一个,最终解决的结果都是一样的。

  9. 有点蓝 有点蓝

    用上了,等效果ing~

  10. 电脑爱好者 电脑爱好者

    方法是好方法 可惜百度蜘蛛太操蛋 不太遵守robots协议 照样抓…

  11. 阿逸 阿逸

    露兜帮我看看我这种情况该怎么办 !http://www.so.com/s?q=site%3Atiebalu.com

  12. 阿逸 阿逸

    我估计就是这样才导致我的百度一直不被收录的。请大神帮我看看

    • Ludou

      @阿逸 如果是apache主机且支持 .htaccess ,可以在 .htaccess 中加入:
      Options -Indexes

      服务器配置信息泄露,请联系主机客服

  13. 小七

    Disallow: /*?replytocom= 应该是这样吧:Disallow: *?replytocom=
    多了个斜杠/ 意义就完全不同了

    • 小七

      @小七 抱歉 理解错误了 …

  14. Ovlor Ovlor

    已经使用第三者方式,将3改成网址可以吗?

  15. 菊部受审 菊部受审

    使用多说应该怎么设置?

  16. 刚哥笔记 刚哥笔记

    我的站设置了伪静态,导航和页面都可以访问,屏蔽了链接里的index.php,但是点击回复某个评论时,链接又成了../index.php/8?replytocom=37#respond这类,导致出现404,咋办?

    • 露兜

      @刚哥笔记 这个不清楚

    • 露兜

      @刚哥笔记 或者用ajax评论吧

      • 刚哥笔记 刚哥笔记

        @露兜 确实用了ajax评论,其他页面链接里的index.php都去掉了,就回复这个链接里去不掉,难道是httpd.ini规则错了?

  17. 泥人传说

    用了你的方法都不行,怎么办????
    robots添加也还是没有屏蔽掉尾部带有#comments和#respond的链接…….

发表留言