溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

WordPress特定文章對(duì)搜索引擎隱藏或只允許搜索引擎查看的示例分析

發(fā)布時(shí)間:2021-09-22 10:09:30 來(lái)源:億速云 閱讀:149 作者:小新 欄目:開(kāi)發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)WordPress特定文章對(duì)搜索引擎隱藏或只允許搜索引擎查看的示例分析的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

對(duì)搜索引擎隱藏特定的文章
這個(gè)問(wèn)題的來(lái)源是這樣的:

眾所周知,隨著搜索引擎的改良,會(huì)越來(lái)越排斥采集和偽原創(chuàng),尤其是百度還推出了起源算法,對(duì)采集站進(jìn)行K站等措施。如果被貼上采集站的標(biāo)簽,所有的努力可能付諸東流。

相信很多站長(zhǎng),也想多一些原創(chuàng)內(nèi)容,并不想全部靠采集別人的文章。然而一個(gè)新站,尤其是個(gè)人站長(zhǎng),其內(nèi)容的充實(shí)速度一定很慢,我們做站不僅要討好搜索引擎,更要討好讀者。如果讀者不能在你的站內(nèi)得到比較充實(shí)豐富的信息,那體驗(yàn)肯定不好。其實(shí)各大名站老站,一樣有相當(dāng)比例的采集或改編內(nèi)容,這符合互聯(lián)網(wǎng)的共享精神。各大電視臺(tái)和報(bào)紙也大部分是轉(zhuǎn)載和文摘,只要摘得好符合了特定需求的內(nèi)容需要,就是有價(jià)值的。

關(guān)鍵在于:不要用采集的文章來(lái)為自己的網(wǎng)站騙取搜索流量。這應(yīng)該是符合互聯(lián)網(wǎng)道德規(guī)范和共識(shí)的。如果只讓原創(chuàng)的內(nèi)容參與搜索引擎的游戲規(guī)則,而非原創(chuàng)部分屏蔽搜索引擎。這樣就能平稱地滿足搜索引擎、網(wǎng)站主、用戶三者的利益。

于是問(wèn)題歸結(jié)于一點(diǎn):如何有效地、可靠地讓“部分文章屏蔽搜索引擎”?

我不知道這是不是一個(gè)比較共性的問(wèn)題,如果一個(gè)網(wǎng)站,既希望通過(guò)豐富的文章來(lái)滿足受眾,但又怕被搜索引擎判斷為采集站,那這個(gè)就是一個(gè)真真切切要面對(duì)的、關(guān)鍵的、核心的、關(guān)系到網(wǎng)站生存發(fā)展的大問(wèn)題。

最近也一直在學(xué)習(xí)相關(guān)方面的知識(shí),以個(gè)人淺見(jiàn),屏蔽搜索引擎有幾類方式:
一、用robots.txt
二、WP的站可以判斷用戶特征(看了你這篇博文后想到的)
三、通過(guò)JS封裝鏈接
四、通過(guò)重定向,比如短鏈接、PHP后臺(tái)重定向等

對(duì)比以上幾種方式,
第一種方法:robots.txt好比在門上貼了封條:“嘿,蛛蛛,我這兒有些內(nèi)容是不讓你檢索的”。這是所謂君子協(xié)定,搜索引擎一定有能力去看你貼著封條門內(nèi)的東西,只是它不收錄罷了。為了判斷一個(gè)站是否有大量的采集內(nèi)容,蛛蛛或許會(huì)有窺探的動(dòng)機(jī)。

這種方法技術(shù)實(shí)現(xiàn)的成本最低,也應(yīng)該能滿足大多數(shù)情況。好象百度在這方面的操守還是可以放心的,比如不索引淘寶的內(nèi)容,而且也很痛恨360對(duì)百度內(nèi)容的索引。

這個(gè)方法進(jìn)一步的問(wèn)題是:
在WP建的站中,如何可以高效率地讓“部分文章屏蔽搜索引擎”?
1、文章標(biāo)題加特征:比如每篇文章的標(biāo)題中加一個(gè)特殊字符,這個(gè)方法可行嗎,robots.txt用disallow:*特殊字條*就可以嗎?
2、文章的標(biāo)簽識(shí)別:這個(gè)在操作層面好象是最最方便的,可是標(biāo)簽似乎是動(dòng)態(tài)的標(biāo)記,無(wú)法在robotx.txt中篩選?
3、文章放進(jìn)特定的目錄:這個(gè)robots.txt比較好寫的,然而在WP文章內(nèi)容管理時(shí)如何簡(jiǎn)易地操作?

第二種方法:好比是查看進(jìn)門者的身份證,如果訪問(wèn)者是搜索引擎,那么就禁止通行。這種方法是對(duì)WP專用的,然后它的好處是可以非常詳細(xì)地區(qū)別對(duì)待,比如百度對(duì)采集的態(tài)度比較緊,而GOOGLE不太一樣,那有些文章就可以對(duì)百度關(guān)門而對(duì)谷歌開(kāi)門。另外一個(gè)比較大的優(yōu)點(diǎn)是,可以把判斷集成在WP環(huán)境中,比如通過(guò)插件或主題讓操作自動(dòng)化。

第三種方法:好比是在門上換了一個(gè)門牌,搜索引擎只知道機(jī)械地去跟蹤門牌上的號(hào)碼,而瀏覽器卻通過(guò)JS把門牌指向到另一個(gè)正確的入口了。然而:搜索引擎對(duì)JS的分析能力可能越來(lái)越強(qiáng)了,而且從谷歌的某些聲明中來(lái)看,搜索引擎也不太喜歡你的內(nèi)容對(duì)人和搜索引擎不一樣。
這個(gè)方法大量地用在淘寶客鏈接的隱藏方面,這個(gè)方法的有效期估計(jì)不太長(zhǎng),而且操作比較麻煩,比較適合靜態(tài)的單獨(dú)頁(yè)面,不太適合WP這樣的數(shù)據(jù)庫(kù)組織文章的架構(gòu)。

第四種方法:好比是給門牌號(hào)加了密,只有你敲門(點(diǎn)擊)了,才給你換成正確的門牌號(hào)。一般的訪問(wèn)者一定會(huì)點(diǎn)擊,而搜索引擎不會(huì)模擬點(diǎn)擊這個(gè)動(dòng)作。
這種方法相對(duì)徹底和“安全”,缺點(diǎn)是:
1、和第三方法一樣操作有些復(fù)雜,適合靜態(tài)的單獨(dú)頁(yè)面,或頁(yè)面中局部的鏈接,不太適合WP的環(huán)境。
2、過(guò)多的重定向,應(yīng)該會(huì)消耗服務(wù)器的運(yùn)算資源,積少成多,如果大量的文章都要進(jìn)行一次重定向,服務(wù)器可能會(huì)不堪重負(fù)。

實(shí)現(xiàn)代碼

具體怎么實(shí)現(xiàn)WordPress 對(duì)搜索引擎隱藏特定的文章呢?廢話不多說(shuō),直接上PHP代碼,放到當(dāng)前主題的functions.php中即可使用(用UTF-8編碼另存為):

// 需要說(shuō)明的是,如果你的WordPress站點(diǎn)開(kāi)啟了頁(yè)面緩存,此功能無(wú)效

function ludouse_add_custom_box() {
 if (function_exists('add_meta_box')) {  
  add_meta_box('ludou_allow_se', '搜索引擎', 'ludou_allow_se', 'post', 'side', 'low');
  add_meta_box('ludou_allow_se', '搜索引擎', 'ludou_allow_se', 'page', 'side', 'low');
 }
}
add_action('add_meta_boxes', 'ludouse_add_custom_box');

function ludou_allow_se() {
 global $post;
 
 //添加驗(yàn)證字段
 wp_nonce_field('ludou_allow_se', 'ludou_allow_se_nonce');
 
 $meta_value = get_post_meta($post->ID, 'ludou_allow_se', true);
 if($meta_value)
  echo '<input name="ludou-allow-se" type="checkbox" checked="checked" value="1" /> 屏蔽搜索引擎';
 else
  echo '<input name="ludou-allow-se" type="checkbox" value="1" /> 屏蔽搜索引擎';
}

// 保存選項(xiàng)設(shè)置
function ludouse_save_postdata($post_id) {
 // 驗(yàn)證
 if ( !isset( $_POST['ludou_allow_se_nonce']))
  return $post_id;

 $nonce = $_POST['ludou_allow_se_nonce'];

 // 驗(yàn)證字段是否合法
 if (!wp_verify_nonce( $nonce, 'ludou_allow_se'))
  return $post_id;

 // 判斷是否自動(dòng)保存
 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) 
   return $post_id;

 // 驗(yàn)證用戶權(quán)限
 if ('page' == $_POST['post_type']) {
  if ( !current_user_can('edit_page', $post_id))
   return $post_id;
 }
 else {
  if (!current_user_can('edit_post', $post_id))
   return $post_id;
 }
 
 // 更新設(shè)置
 if(!empty($_POST['ludou-allow-se']))
  update_post_meta($post_id, 'ludou_allow_se', '1');
 else
  update_post_meta($post_id, 'ludou_allow_se', '0');
}
add_action('save_post', 'ludouse_save_postdata');

// 對(duì)于設(shè)置不允許抓取文章和頁(yè)面
// 禁止搜索引擎抓取,返回404
function do_ludou_allow_se() {
 // 本功能只對(duì)文章和頁(yè)面有效
 if(is_singular()) {
  global $post;
  $is_robots = 0;
  $ludou_allow_se = get_post_meta($post->ID, 'ludou_allow_se', true);

  if(!empty($ludou_allow_se)) {
   // 下面是爬蟲(chóng)Agent判斷關(guān)鍵字?jǐn)?shù)組
   // 有點(diǎn)簡(jiǎn)單,自己優(yōu)化一下吧
   $bots = array(
      'spider',
      'bot',
      'crawl',
      'Slurp',
      'yahoo-blogs',
      'Yandex',
      'Yeti',
      'blogsearch',
      'ia_archive',
      'Google',
      'baidu'
      );
  
   $useragent = $_SERVER['HTTP_USER_AGENT'];
  
   if(!empty($useragent)) {
    foreach ($bots as $lookfor) {
     if (stristr($useragent, $lookfor) !== false) {
      $is_robots = 1;
      break;
     }
    }
   }

   // 如果當(dāng)前文章/頁(yè)面禁止搜索引擎抓取,返回404
   // 當(dāng)然你可以改成403
   if($is_robots) {
    status_header(404);
    exit;
   }
  }
 }
}
add_action('wp', 'do_ludou_allow_se');

使用方法

成功添加以上代碼到當(dāng)前主題的functions.php后,我們就可以正常使用了,完全傻瓜式。在WordPress后臺(tái)文章和頁(yè)面的編輯頁(yè)面,右邊欄底部我們可以看到這樣的選框:

WordPress特定文章對(duì)搜索引擎隱藏或只允許搜索引擎查看的示例分析

如果當(dāng)前文章/頁(yè)面需要禁止搜索引擎抓取,勾選即可。勾選后,當(dāng)此文章/頁(yè)面被搜索引擎訪問(wèn)時(shí)就會(huì)返回404狀態(tài),無(wú)任何內(nèi)容。如果你不喜歡給搜索引擎返回404,擔(dān)心死鏈太多影響SEO,可以將代碼中的:

status_header(404);
exit;

改成:

echo "<meta name=\"robots\" content=\"noindex,noarchive\" />\n";

再將:

add_action('wp', 'do_ludou_allow_se');

改成:

add_action('wp_head', 'do_ludou_allow_se');

這樣就直接在網(wǎng)頁(yè)的head部分添加meta聲明:

<meta name="robots" content="noindex,noarchive" />

告訴搜索引擎不要索引本頁(yè)面、不要顯示快照。需要注意的是,你的主題目錄下的header.php中必須有以下代碼:

wp_head();


設(shè)置文章只允許搜索引擎查看
有些文章只是為了SEO才發(fā)布的,想讓這些文章只允許搜索引擎抓取,普通的訪客無(wú)法查看,在WordPress中如何做到?

實(shí)現(xiàn)代碼

如果你的WordPress站點(diǎn)未開(kāi)啟頁(yè)面緩存,這個(gè)需求也不難實(shí)現(xiàn),我們可以參考上面對(duì)搜索引擎隱藏特定的文章中的代碼,稍作修改即可。在當(dāng)前主題的functions.php中添加以下php代碼,用UTF8編碼保存:

// 給文章和頁(yè)面的編輯頁(yè)添加選項(xiàng)
function ludouseo_add_custom_box() {  
 add_meta_box('ludou_se_only', '搜索引擎專屬', 'ludou_se_only', 'post', 'side', 'low');
 add_meta_box('ludou_se_only', '搜索引擎專屬', 'ludou_se_only', 'page', 'side', 'low');
}
add_action('add_meta_boxes', 'ludouseo_add_custom_box');

function ludou_se_only() {
 global $post;
 
 //添加驗(yàn)證字段
 wp_nonce_field('ludou_se_only', 'ludou_se_only_nonce');
 
 $meta_value = get_post_meta($post->ID, 'ludou_se_only', true);
 if($meta_value)
  echo '<input name="ludou-se-only" type="checkbox" checked="checked" value="1" /> 只允許搜索引擎查看';
 else
  echo '<input name="ludou-se-only" type="checkbox" value="1" /> 只允許搜索引擎查看';
}

// 保存選項(xiàng)設(shè)置
function ludouseo_save_postdata($post_id) {
 // 驗(yàn)證
 if ( !isset( $_POST['ludou_se_only_nonce']))
  return $post_id;
 $nonce = $_POST['ludou_se_only_nonce'];
 
 // 驗(yàn)證字段是否合法
 if (!wp_verify_nonce( $nonce, 'ludou_se_only'))
  return $post_id;
  
 // 判斷是否自動(dòng)保存
 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
   return $post_id;
   
 // 驗(yàn)證用戶權(quán)限
 if ('page' == $_POST['post_type']) {
  if ( !current_user_can('edit_page', $post_id))
   return $post_id;
 }
 else {
  if (!current_user_can('edit_post', $post_id))
   return $post_id;
 }
 
 // 更新設(shè)置
 if(!empty($_POST['ludou-se-only']))
  update_post_meta($post_id, 'ludou_se_only', '1');
 else
  delete_post_meta($post_id, 'ludou_se_only');
}
add_action('save_post', 'ludouseo_save_postdata');

function do_ludou_se_only() {
 // 本功能只對(duì)文章和頁(yè)面有效
 if(is_singular()) {
  global $post;
  $is_robots = 0;
  $ludou_se_only = get_post_meta($post->ID, 'ludou_se_only', true);
  
  if(!empty($ludou_se_only)) {
   // 下面是搜索引擎Agent判斷關(guān)鍵字?jǐn)?shù)組
   // 有點(diǎn)簡(jiǎn)單,自己優(yōu)化一下吧
   $bots = array(
      'spider',
      'bot',
      'crawl',
      'Slurp',
      'yahoo-blogs',
      'Yandex',
      'Yeti',
      'blogsearch',
      'ia_archive',
      'Google'
      );
  
   $useragent = $_SERVER['HTTP_USER_AGENT'];
  
   if(!empty($useragent)) {
    foreach ($bots as $lookfor) {
     if (stristr($useragent, $lookfor) !== false) {
      $is_robots = 1;
      break;
     }
    }
   }
   
   // 如果不是搜索引擎,就顯示錯(cuò)誤信息
   // 已登錄的用戶不受影響
   if(!$is_robots && !is_user_logged_in()) {
    wp_die('您無(wú)權(quán)查看此文!');
   }
  }
 }
}
add_action('wp', 'do_ludou_se_only');

使用方法

成功添加以上代碼到當(dāng)前主題的functions.php后,我們就可以正常使用了,完全傻瓜式。在WordPress后臺(tái)文章和頁(yè)面的編輯頁(yè)面,右邊欄底部我們可以看到這樣的選框:

WordPress特定文章對(duì)搜索引擎隱藏或只允許搜索引擎查看的示例分析

如果當(dāng)前文章/頁(yè)面需要禁止搜索引擎抓取,勾選即可。勾選后,當(dāng)此文章/頁(yè)面被普通訪客訪問(wèn)時(shí)就會(huì)顯示下面的錯(cuò)誤信息(搜索引擎和已登錄用戶不受影響):

WordPress特定文章對(duì)搜索引擎隱藏或只允許搜索引擎查看的示例分析

感謝各位的閱讀!關(guān)于“WordPress特定文章對(duì)搜索引擎隱藏或只允許搜索引擎查看的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI