大部分 CMS 系统由于是国外的环境,一般对 google 的支持比较好。如果是再国内使用,想要让百度收录需要主动推送一下博客页(每个 post)。

获取推送 url

需要在 百度搜索资源平台_共创共享鲜活搜索 (baidu.com) 中注册自己的网站,不赘述。

主要是获取一个类似的链接

http://data.zz.baidu.com/urls?site=<site_url>&token=<token>

添加 js 脚本

在网站中添加下面的代码(注意替换成你自己的 site 和 token)

<script>
    var xhr = new XMLHttpRequest();
	xhr.open("POST", 'https://data.zz.baidu.com/urls?site=<your_site>&token=<your_token>', true);
	xhr.setRequestHeader("Content-Type", "text/plain");

	xhr.onreadystatechange = function() {
    	if (this.readyState === XMLHttpRequest.DONE && this.status === 200) {
    	}
	}
    var current_url = window.location.href;
	xhr.send(current_url);
</script>

推荐在 body 的末尾添加这段 <script>,避免影响页面的加载。

cors 问题

cors(跨域资源共享),由于上面的请求地址中的域名与你的网站的地址不一致,就会引起浏览器对跨域资源共享的限制,而百度收录 API 接口并没有做相关的处理,导致浏览器屏蔽这次响应。

注意,这一次的响应已经成功的发送了(因为这是一次简单请求),百度的服务器也成功的响应了,只是浏览器屏蔽了响应内容。如果没有强迫症的话,看完这里就可以退出了。

cors 问题解决

前提,你需要使用过nginx 代理

cors 的控制权在资源方,即你请求的服务器,显然,你对百度的服务器没有控制权,但是我们可以通过中间代理的方式解决。

使用 nginx 作为代理,在 nginx 中加入以下内容(其余内容请自行配置)

{
	...
    proxy_pass http://data.zz.baidu.com/;
	add_header Access-Control-Allow-Origin https://blog.kicey.site;
}

关于 cors 请移步 跨域资源共享 CORS 详解 - 阮一峰的网络日志 (ruanyifeng.com)

重复推送

百度收录是不推荐重复推送的,这个暂时没有想到办法直接用前端 js 处理(所以我开启了一个后端的小服务专门负责推送的转发),可以将这段脚本添加到网站时对整个网站进行扫描(用专门的网站批量访问工具),之后再去掉这段脚本。