前 言
百度搜索资源平台提供多种提交站点数据的方式用于加速收录,收录对于网站的利处也就不再赘述,下面就记录一下如何实现的。
实现方式
首先引入一个概念:
footer在网站中通常称为“脚页”,一般来说一个网站系统中基本上footer共用率是最高的,那么我们要想让尽可能所有的页面都可以触发到“推送代码”,放置代码的最优位置就是footer。当然将此类代码加入footer也是为了不拖累正常网页的加载效率。
1.自动推送
特点:难度较低,通用性极强,效果较好,无性能损耗
无论采用何种方式(有的程序、主题自带将代码加入脚页功能,不自带此功能的需要手动修改代码实现添加)将下面的代码添加于所有页面共用的footer中。
<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>
2.主动推送(实时)
特点:难度相对高一些,不同的建站系统几乎都需要定制,效果较好,极其微小甚至忽略不计的性能损耗
代码以WordPress为例,在正在使用的主题的模板函数(一般为functions.php)中添加如下代码:
add_action('save_post', 'wpjam_save_post_notify_baidu_zz', 10, 3); function wpjam_save_post_notify_baidu_zz($post_id, $post, $update){ if($post->post_status != 'publish') return; $baidu_zz_api_url = 'http://data.zz.baidu.com/urls?site=你的域名,例如morton.li&token=该站专属准入秘钥'; $response = wp_remote_post($baidu_zz_api_url, array( 'headers' => array('Accept-Encoding'=>'','Content-Type'=>'text/plain'), 'sslverify' => false, 'blocking' => false, 'body' => get_permalink($post_id) )); } // ** 百度主动推送代码 - 结束 ** //
同时给出一些官方的示例:
curl推送示例:
将要提交的链接按照每行一条的格式写入一个文本文件中,命名此文件为urls.txt,然后进入该文件所在目录,执行如下命令:
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=你的域名,例如morton.li&token=该站专属准入秘钥"
post推送示例
POST /urls?site=你的域名,例如morton.li&token=该站专属准入秘钥 HTTP/1.1 User-Agent: curl/7.12.1 Host: data.zz.baidu.com Content-Type: text/plain Content-Length: 83
post内容格式为:
https://Morton.Li/example1.html https://Morton.Li/example2.html
PHP推送示例
$urls = array( 'https://Morton.Li/example1.html', 'https://Morton.Li/example2.html', ); $api = 'http://data.zz.baidu.com/urls?site=你的域名,例如morton.li&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); echo $result;
ruby推送示例
require 'net/http' urls = ['https://Morton.Li/example1.html', 'https://Morton.Li/example2.html'] uri = URI.parse('http://data.zz.baidu.com/urls?site=你的域名,例如morton.li&token=该站专属准入秘钥') req = Net::HTTP::Post.new(uri.request_uri) req.body = urls.join("\n") req.content_type = 'text/plain' res = Net::HTTP.start(uri.hostname, uri.port) { |http| http.request(req) } puts res.body
以上几种方式推送成功则返回:
{ "remain":4999998, "success":2, "not_same_site":[], "not_valid":[] }
反之:
{ "error":401, "message":"token is not valid" }
百度支持的其他加速收录方式的提交方式
1.提交Sitemap
Sitemap 俗称站点地图,顾名思义,在文件内解释了各个页面的链接与联系甚至包括更新时间,以便搜索引擎可以更加智能地抓取网站。最简单的 Sitemap 形式就是XML 文件。
在百度搜索资源平台中依次进入“用户中心”,“站点管理”,进入所要操作的站点,“链接提交”中的自动提交分类下的sitemap提交方式输入贵站站点地图的访问地址并提交。
其中:
a. 一次最多提交10个文件地址;
b. 文件地址格式为txt或xml,每个地址文件最多包含50,000个网址且需小于10MB;
c. 如果验证了网站的主域,那么sitemap文件中可包含该网站主域下的所有网址。
提交后百度后台会定期访问你的Sitemap地址并收录优质页面。
2.手动提交
顾名思义,一个一个地址的将页面提交给百度。因对绝大多数内容网站不切合实际,不再赘述。
发表回复