##寫在前面
對於存取量低的新站來說,等待搜尋引擎收錄新內容比較慢,可以透過百度站長平台提供的介面向其主動推送連結,以加快收錄。百度站長平台相關功能入口:登入後點擊左側列表中的链接提交
1、主動推送:最為快速的提交方式,推薦您將站點當天新產出連結立即透過此方式推送給百度,以保證新連結可以及時被百度收錄。
2、自動推送:最為便捷的提交方式,請將自動推送的JS程式碼部署在站點的每一個頁面原始碼中,部署程式碼的頁面在每次被瀏覽時,連結會被自動推送給百度。可以與主動推送配合使用。
3、sitemap:您可以定期將網站連結放到sitemap中,然後將sitemap提交給百度。百度會週期性的抓取檢查您提交的sitemap,對其中的連結進行處理,但收錄速度慢於主動推送。
4、手動提交:一次性提交連結給百度,可以使用此種方式。
P.S.筆者的環境是PHP5.3 + WordPress4.2
##一.主動推送
據說是最快的方式,WP中很容易實現,直接編輯functions.php(可以透過WP後台,外观->编辑->模板函数(functions.php)線上編輯,也可以透過FTP工具拿下來改了再放上去,路徑為wordpress/wp-content/themes/[currentTheme]/functions.php),在開頭註釋結束的位置添上filter,如下:
/*submit url*/
function submitUrl($postID, $post) {
$url = 'www.ayqy.net/blog/'.$post->post_name.'/';
$api = 'http://data.zz.baidu.com/urls?site=www.ayqy.net&token=[yourtoken]';
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS => $url."\n",
CURLOPT_HTTPHEADER => array('Content-Type: text/plain'),
);
curl_setopt_array($ch, $options);
$result = curl_exec($ch);
//echo $result;
if (function_exists( 'swpsmtp_test_mail' )) {
$email = 'nwujiajie@163.com';
swpsmtp_test_mail( $email, 'Submit Result', $result.'<p><a href="http://'.$url.'">点我</a>查看原文<p>' );
}
}
add_action('publish_post', 'submitUrl', 0, 2); // submit url
/*end submit url*/
注意:把上面程式碼中的[yourtoken]換成從百度站長平台拿到的token
在發佈博文時執行filter,拼接得到文章url,再透過curl_exec發送post請求提交url,最後把連結提交結果發送到信箱(WP發送郵件需要配置SMTP,筆者使用的是Easy WP SMTP外掛)
效果還行,每次發佈博文都會自動提交連結,缺點是無法提交以前的連結,如果需要提交以前的連結,可以採用sitemap自動提交,下面詳細介紹
##二.自動推送
...請將自動推送的JS程式碼部署在站點的每一個頁面原始碼中...
不考慮,頁面載入的JS已經夠多了,越來越慢可不好,如果非要用這種方法的話,需要編輯footer.php(和改functions.php的方法一樣,文件位置也一樣),在</body>前添上如下程式碼:
<script>
(function(){
var bp = document.createElement('script');
bp.src = '//push.zhanzhang.baidu.com/push.js';
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
P.S.上面的程式碼是百度站長平台提供的,每個站點應該一樣,不用修改
不建議使用該方法,雖說不麻煩,但讓所有使用者買單是不對的
##三.sitemap
最方便的方法,當然,前提是我們得先有一個會自動更新的sitemap.xml文件,這件事不用自己動手,可以使用WP外掛:All In One SEO Pack
裝好外掛並啟用後,WP後台左側仪表盘下面會有多合一SEO集,子選單中的XML网站地图就是我們需要的sitemap.xml,可以點擊更新网站地图,下方輸出資訊類似於:
2016-03-08 15:46:03 3.29 MB memory used generating the dynamic 压缩 root sitemap in 0.628 seconds, 35.38 MB total memory used.
2016-03-08 09:17:31 3.25 MB memory used generating the dynamic root sitemap in 0.596 seconds, 35.34 MB total memory used.
2016-03-08 00:41:29 3.25 MB memory used generating the dynamic root sitemap in 0.595 seconds, 35.34 MB total memory used.
2016-03-07 19:23:09 Daily scheduled sitemap check has finished.
2016-03-07 19:23:09 已成功通知bing贵站网站地图(http://www.ayqy.net/blog/sitemap.xml.gz)的变动。
2016-03-07 19:23:09 通知google贵站网站地图(http://www.ayqy.net/blog/sitemap.xml.gz)变动失败,无法通过wp_remote_get()访问。
猜一下,sitemap就是http://www.ayqy.net/blog/sitemap.xml,可以嘗試下載或者用瀏覽器存取一下,確定沒問題後拿著這個url百度站長平台填表吧
特別注意:sitemap連結必須是帶有http://的完整url,而不是表單提示的:
示例如下:
www.site.com/site.txt
www.site.com/site.xml
然後輸入驗證碼提交就好了,5分鐘後看,如果狀態為「正常」,就可以了。從此再也不用管連結提交了
##四.結構化數據外掛
官方提供了用於提交數據的WP外掛,下載地址:http://bs.baidu.com/zhanzhang/wp-baidusubmit-140213.zip
介紹如下:
自動推送sitemap,優化內容收錄 沒有sitemap權限,不知道怎麼提交sitemap數據?結構化數據外掛幫你搞定。遍歷論壇帖子頁歷史URL數據,自動生成sitemap提交到百度。
即時推送論壇新內容,加快收錄 每天海量新帖子?各種數據頻繁更新?結構化數據外掛幫你搞定。有新帖發佈,立即將新帖子網址及內容推送至百度站長平台,帖子頁發生變化,百度也能即時更新相應數據。
優質內容,優化展現,提升使用者點擊率 優質內容不夠醒目?應用結構化摘要優化展現,提升結果點擊率,流量節節攀升不是夢。
其實是交給站長一隻小蜘蛛,內容更新(比如發佈博文)時,小蜘蛛出來一圈,把抓到的內容處理後提交給百度
WP外掛可能會報錯(雖然是官方正品),報錯如下:
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode is enabled or an open_basedir is set in /home/xxx/
CURLOPT_FOLLOWLOCATION用來深度爬取連結,php安全模式下不支援該選項,不建議為了外掛去關掉安全模式,所以我們修改外掛,在sitemap.php(路徑為wordpress/wp-content/plugins/baidusubmit/sitemap.php)開頭<php標籤下一行添上如下程式碼:
// fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode
function curl_exec_follow(/*resource*/ $ch, /*int*/ &$maxredirect = null) {
$mr = $maxredirect === null ? 5 : intval($maxredirect);
if (ini_get('open_basedir') == '' && ini_get('safe_mode' == 'Off')) {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, $mr > 0);
curl_setopt($ch, CURLOPT_MAXREDIRS, $mr);
} else {
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
if ($mr > 0) {
$newurl = curl_getinfo($ch, CURLINFO_EFFECTIVE_URL);
$rch = curl_copy_handle($ch);
curl_setopt($rch, CURLOPT_HEADER, true);
curl_setopt($rch, CURLOPT_NOBODY, true);
curl_setopt($rch, CURLOPT_FORBID_REUSE, false);
curl_setopt($rch, CURLOPT_RETURNTRANSFER, true);
do {
curl_setopt($rch, CURLOPT_URL, $newurl);
$header = curl_exec($rch);
if (curl_errno($rch)) {
$code = 0;
} else {
$code = curl_getinfo($rch, CURLINFO_HTTP_CODE);
if ($code == 301 || $code == 302) {
preg_match('/Location:(.*?)\n/', $header, $matches);
$newurl = trim(array_pop($matches));
} else {
$code = 0;
}
}
} while ($code && --$mr);
curl_close($rch);
if (!$mr) {
if ($maxredirect === null) {
trigger_error('Too many redirects. When following redirects, libcurl hit the maximum amount.', E_USER_WARNING);
} else {
$maxredirect = 0;
}
return false;
}
curl_setopt($ch, CURLOPT_URL, $newurl);
}
}
return curl_exec($ch);
}
// end fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode
再把報錯的語句替換掉,如下:
// curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_exec_follow($ch); // fix CURLOPT_FOLLOWLOCATION cannot be activated when safe_mode
注意:深度爬取連結比較慢,裝上這個外掛後每次發佈博文大約需要30s的樣子,慎重
##五.總結
首先必備的是sitemap自動提交:
[caption id="attachment_961" align="alignnone" width="776"]
sitemap[/caption]
然後主動推送和結構化數據外掛可以作為輔助措施:
[caption id="attachment_962" align="alignnone" width="242"]
baidu sitemap[/caption]
暫無評論,快來發表你的看法吧