跳到主要內容
黯羽輕揚每天積累一點點

百度站長平台連結提交

免費2016-03-08#Solution#链接自动提交#wordpress sitemap

試過post提交、WP外掛提交,都不好用,推薦透過sitemap自動提交連結,BaiDuSpider會時不時地去取

##寫在前面

對於存取量低的新站來說,等待搜尋引擎收錄新內容比較慢,可以透過百度站長平台提供的介面向其主動推送連結,以加快收錄。百度站長平台相關功能入口:登入後點擊左側列表中的链接提交

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 sitemap[/caption]

然後主動推送和結構化數據外掛可以作為輔助措施:

[caption id="attachment_962" align="alignnone" width="242"]baidu sitemap baidu sitemap[/caption]

評論

暫無評論,快來發表你的看法吧

提交評論