當我們發表新的內容時鏈接能在第一時間提交到搜索引擎,能夠保證新鏈接及時被搜索引擎收錄,根據百度星火計劃2.0及時提交鏈接還能加強內容原創保護,獲得更好的排名,今天就給大家講講鏈接自動提交到搜索引擎的幾種方法:
一.自動推送JS - 最為便捷的提交方式
現在百度及360站長平台都推出了自動推送JS代碼,我們可以將自動推送的JS代碼部署在站點的每一個頁面源代碼中,部署代碼的頁面在每次被浏覽時,鏈接會被自動推送給搜索引擎。
百度自動JS推送安裝方法:
站長需要在每個頁面的HTML代碼中包含以下自動推送JS代碼:
<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>
如果站長使用PHP語言開發的網站,可以按以下步驟操作:<?php include_once("baidu_js_push.php") ?>
360自動推送JS安裝的安裝方法和百度大致是差不多的,不過360自動推送的JS代碼不是一樣的,需要到360站長後台獲取專屬JS推送代碼。
注意:JS自動推送不能判斷重復提交,百度官方自己也說了惡意提交垃圾頁面或者重復頁面的站點將會被懲罰限制提交,直至關閉提交權限,這樣我們該怎麼做才能避免重復提交呢?
boke112導航分享了wordpress程序鏈接重復提交解決方法:
只需要將以下代碼添加到functions.php文件最後一個?>即可。(這個方法適用於WordPress站點)
/**
* 優化解決百度自動推送和360自動收錄JS重復推送問題 By 懿古今
* 文章地址:http://yigujin.wang/843.html
* 百度自動推送的JS代碼優化 By 張戈博客
* 文章地址:http://zhangge.net/5100.html
* 轉載請保留出處,謝謝合作!
**/
add_action( 'wp_footer', 'bdPushData', 999);
//檢查百度是否已收錄最新改進版本
if(!function_exists('baidu_check_record')){
function baidu_check_record($url){
global $wpdb;
$post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
$baidu_record = get_post_meta($post_id,'baidu_record',true);
if( $baidu_record != 1){
$url='http://www.baidu.com/s?wd='.$url;
$curl=curl_init();
curl_setopt($curl,CURLOPT_URL,$url);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$rs=curl_exec($curl);
curl_close($curl);
//如果抓取到的百度結果中不存在【提交網址】這個關鍵詞,則認為該頁面已被百度收錄
if(!preg_match_all('/提交網址/u',$rs,$matches) && preg_match_all('/百度為您找到相關結果/u',$rs, $matches)){
update_post_meta($post_id, 'baidu_record', 1) || add_post_meta($post_id, 'baidu_record', 1, true);
return 1;
} else {
return 0;
}
} else {
return 1;
}
}
}
//檢查360是否已收錄最新改進版本
if(!function_exists('sll_check_record')){
function sll_check_record($sslurl){
global $wpdb;
$post_id = ( null === $post_id ) ? get_the_ID() : $post_id;
$sll_record = get_post_meta($post_id,'sll_record',true);
if( $sll_record != 1){
$sslurl='http://www.so.com/s?q='.$sslurl;
$csslurl=curl_init();
curl_setopt($csslurl,CURLOPT_URL,$sslurl);
curl_setopt($csslurl,CURLOPT_RETURNTRANSFER,1);
$rs=curl_exec($csslurl);
curl_close($csslurl);
//如果抓取到的360結果中不存在【提交網址】這個關鍵詞,則認為該頁面已被360收錄
if(!preg_match_all('/提交網址/u',$rs,$matches)){
update_post_meta($post_id, 'sll_record', 1) || add_post_meta($post_id, 'sll_record', 1, true);
return 1;
} else {
return 0;
}
} else {
return 1;
}
}
}
//輸出百度自動推送和360自動收錄的js代碼
if(!function_exists('bdPushData')){
function bdPushData() {
if ($_SERVER['HTTPS'] != "on") {
$currentUrl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
} else {
$currentUrl = 'https://'.$_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"];
}
//判斷是否是百度未收錄頁面,並且當前頁面是否等於正規url地址(get_premalink)
if(baidu_check_record(get_permalink()) == 0 && $currentUrl == get_permalink()) {
echo "<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>";
}
//判斷是否是360未收錄頁面,並且當前頁面是否等於正規url地址(get_premalink)
if(sll_check_record(get_permalink()) == 0 && $currentUrl == get_permalink()) {
echo "<script>
(function(){
var src = (document.location.protocol == 'http:') ? 'http://js.passport.qihucdn.com/11.0.1.js?9d1e70eca6a305e9ff409dcab8478888':'https://jspassport.ssl.qhimg.com/11.0.1.js?9d1e70eca6a305e9ff409dcab8478888';
document.write('<script src='' + src + '' id='sozz'><\/script>');
})();
</script>";
}
}
}
其中,一定要記得修改代碼中的360自動收錄的那個秘鑰,每個站點都有屬於自己的秘鑰,具體秘鑰可在360站長平台中獲取。
emlog程序如何解決鏈接重復提交呢?
1.找到主題的module.php文件,在文件最底部添加如下代碼
<?php //判斷內容頁是否百度收錄及百度自動推送代碼
function baidu($url){
$url='http://www.baidu.com/s?wd='.$url;
$curl=curl_init();curl_setopt($curl,CURLOPT_URL,$url);curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);$rs=curl_exec($curl);curl_close($curl);if(!strpos($rs,'沒有找到')){return 1;}else{return 0;}}
function logurl($id){$url=Url::log($id);
if(baidu($url)==1){echo "<a rel=\"external nofollow\" title=\"本文已被百度收錄\" target=\"_blank\" href=\"http://www.baidu.com/s?wd=$url\">本文已被百度收錄!</a>";
}else{echo "<a>本文已提交百度!</a><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.找到文章頁面文件echo_log.php,在合適的位置添加以下代碼:
<?php echo logurl($logid);?>
二.主動推送 - 最為快速的提交方式
1,需要網站制作數據推送接口,進入主動推送工具後,會看到接口調用地址的token,token是由16個英文數字組合的字符串
給大家舉一個PHP主動推送示例:
<?php
$urls = array(
'http://www.tianyaseo.com/',
);
$api = 'http://data.zz.baidu.com/urls?site=www.tianyaseo.com&token=999999999';
$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;
?>
點擊預覽:http://www.tianyaseo.com/yanshi/123/ping/
主動推送狀態碼說明如下圖:
使用主動推送功能會達到怎樣效果?
及時發現:可以縮短百度爬蟲發現您站點新鏈接的時間,使新發布的頁面可以在第一時間被百度收錄
保護原創:對於網站的最新原創內容,使用主動推送功能可以快速通知到百度,使內容可以在轉發之前被百度發現
三.sitemap提交
您可以定期將網站鏈接放到sitemap中,然後將sitemap提交給百度。百度會周期性的抓取檢查您提交的sitemap,對其中的鏈接進行處理,但收錄速度慢於主動推送。
四.手動提交
一次性提交鏈接給百度,可以使用此種方式。