虽然度娘
是一个垮掉
的搜索引擎,但是谁叫它在强国
是垄断的存在呢。谈谈 Hexo
部署在 Github Pages
怎么提交 Sitemap
给百度。
Sitemap
因为 Github Pages
禁止百度爬虫所以这里我们不做过多的说明,无疑这种方式是行不通的
自动推送
目前在用的一种推送方式
1
| 自动推送是百度搜索资源平台为提高站点新增网页发现速度推出的工具,安装自动推送JS代码的网页,在页面被访问时,页面URL将立即被推送给百度
|
安装方式也很简单,只需要在页面中加入以下 JS
即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script>
|
主动推送 (实时)
我们重点来说说主动推送
首先我们这里需要安装一下生成 sitemap
的包
1
| npm i hexo-generator-baidu-sitemap -s
|
新建文件 push_sitemap_to_baidu.php
,这里我们通过 PHP
来实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <?php // 解析xml $file = "./public/baidusitemap.xml"; $xml = simplexml_load_file($file); $urls = array(); foreach ($xml as $key => $value) { $url = array(); $url = (array) $value->loc; $urls[] = current($url); } // 调用百度API $api = 'http://data.zz.baidu.com/urls?site=https://www.jakehu.me&token=***'; $ch = curl_init(); $options = array( CURLOPT_URL => $api, CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_POSTFIELDS => implode("\n", $urls), CURLOPT_HTTPHEADER => array('Content-Type: text/plain'), ); curl_setopt_array($ch, $options); $result = curl_exec($ch); // 返回结果记录 $time = date("Y-m-d H:i:s"); $content = $time . " --- " . $result . PHP_EOL; $file = "push_sitemap.log"; $fp = fopen($file, "a+") or die("fail to open the file"); fwrite($fp, $content); fclose($fp);
|
最后会在根目录下生成 push_sitemap.log
日志文件
然后改造 package.json
如下
1 2 3
| "scripts": { "push": "hexo cl && hexo g && gulp && hexo d && php -f push_sitemap_to_baidu.php" }
|
这条命令包含了清理
、生成
、压缩
、部署
、推送Sitemap
,关于 gulp
压缩部分可看这里【点击查看】
最后我们可以直接运行命令进行部署和推送 npm run push
,或者将 push
改为 start
直接运行 npm start
即可