Typecho 文章页面显示是否已被百度谷歌收录

看到 wordpress 博客上有自动检测并展示是否被百度/谷歌收录的功能,在想 Typecho 是不是也可以实现呢?答案是肯定的!

一、效果

1、文章《【杂记】流水线小计》设置了密码访问,搜索引擎访问均返回 403,故百度和谷歌均未收录:

ALL.NO.RECORD.png

2、文章《【杂记】2/28 起国内 iCloud 将由云上贵州运营》已被谷歌收录,但百度未收录:

BAIDU.NO.GOOGLE.YES.png

3、文章《【教程】给网页标题增加特效》已被百度和谷歌收录:

ALL.RECORD.png

4、被百度收录,但谷歌未收录:

BAIDU.YES.GOOGLE.NO.png

二、实现

主要修改主题模板中的 function.php 和 post.php,可以在后台主题中直接编辑这两个文件,也可以下载下来通过代码编辑器(如 Editplus、Notepad++ 等)编辑后再覆盖上传。

① function.php

文件路径:网站根目录/usr/themes/模板名/function.php,建议修改前先做个备份。

直接在最尾巴或者合适的位置添加以下代码:

//百度收录查询
function baidu_record() {
$url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
$url2='https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

if(checkBaidu($url)==1)
{echo "已收录";
}
else
{echo "<a style=\"color:red;\" rel=\"external nofollow\" title=\"点击提交收录!\" target=\"_blank\" href=\"https://ziyuan.baidu.com/linksubmit/url?sitename=$url2\">未收录</a>";}
}

   function checkBaidu($url) { 
    $url = 'http://www.baidu.com/s?wd=' . urlencode($url); 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $rs = curl_exec($curl); 
    curl_close($curl); 
    if (!strpos($rs, '没有找到')) { //没有找到说明已被百度收录 
        return 1; 
    } else { 
        return -1; 
    } 
}

//谷歌收录查询
function google_record() {
$url='https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 

if(checkGoogle($url)==1)
{echo "已收录";
}
else
{echo "<span style=\"color:red;\">未收录</span>";}
}

   function checkGoogle($url) { 
    $url = 'http://www.google.com/search?q="' . urlencode($url).'"'; 
    $curl = curl_init(); 
    curl_setopt($curl, CURLOPT_URL, $url); 
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
    $rs = curl_exec($curl); 
    curl_close($curl); 
    if (!strpos($rs, 'No results') && !strpos($rs, 'Your search')) { //没有结果说明已被谷歌收录 
        return 1; 
    } else { 
        return -1; 
    } 
}

注:关于判断百度谷歌是否收录的代码,网上有好多版本,有的准确有的准确度差些,如果有更好的代码,欢迎交流!

② post.php

文件路径:网站根目录/usr/themes/模板名/post.php,同样建议修改前先做个备份。

可以在最尾巴(如本站)或者你要展示的位置添加以下代码:

<i class="fa fa-search"></i>
<span>百度收录:<?php echo baidu_record() ?></span>
<i class="fa fa-google"></i>
<span>谷歌收录:<?php echo google_record() ?></span>

可以根据需要自己调整下样式。

保存后或者上传后,清理浏览器缓存,即可看到效果。

2018/01/26 更新:
谷歌收录判断似乎有间歇性出错的情况,间歇意思就是有时候可以正确判断,有时候会返回错误值,可能谷歌有做 curl 限制。


参考文章:
1、《typecho文章页面显示是否已被百度收录的方法


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 typecho收录搜索引擎 的文章

 本文最后更新于 2018/01/26 11:38:32,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 系统 > Typecho 文章页面显示是否已被百度谷歌收录

精选评论

  1. 森纯博客
    森纯博客 回复

    Windows 10Chrome 71.0.3554.0来自 广东 的大神

    这个代码太好了,我拿走了,之前也看过类似的,不过没有谷歌的

    1. 欧文斯

      短期用是可以比较准确判断,久了貌似谷歌会限制

  2. 七月
    七月 回复

    Windows 10Chrome 63.0.3239.132来自 河南 的大神

    这个挺好的,请问我可以转载一下么,会标注来源的

    1. 欧文斯

      可以的,保留原文链接即可。

  3. cnfox
    cnfox 回复

    Windows 10Chrome 74.0.3724.8来自 山东 的大神

    可以授权转载嘛?
    标注来源

    1. 欧文斯

      可以,使用评论时的 IP 访问文章授权地址:https://vircloud.net/action/share/664.md。

  4. Wasabi
    Wasabi 回复

    Windows 10Chrome 80.0.3987.132来自 河南 的大神

    站长您好,可以授权让我复制一下码子不 icon_neutral.gif

    1. 欧文斯

      可以,使用评论时的 IP 访问文章授权地址:https://vircloud.net/action/share/664.md