《PHP教程:WordPress特定文章對搜索引擎隱藏或只允許搜索引擎查看》要點:
本文介紹了PHP教程:WordPress特定文章對搜索引擎隱藏或只允許搜索引擎查看,希望對您有用。如果有疑問,可以聯系我們。
PHP編程對搜索引擎隱藏特定的文章
這個問題的來源是這樣的:
PHP編程眾所周知,隨著搜索引擎的改良,會越來越排斥采集和偽原創,尤其是百度還推出了起源算法,對采集站進行K站等措施.如果被貼上采集站的標簽,所有的努力可能付諸東流.
PHP編程相信很多站長,也想多一些原創內容,并不想全部靠采集別人的文章.然而一個新站,尤其是個人站長,其內容的充實速度一定很慢,我們做站不僅要討好搜索引擎,更要討好讀者.如果讀者不能在你的站內得到比較充實豐富的信息,那體驗肯定不好.其實各大名站老站,一樣有相當比例的采集或改編內容,這符合互聯網的共享精神.各大電視臺和報紙也大部分是轉載和文摘,只要摘得好符合了特定需求的內容需要,就是有價值的.
PHP編程關鍵在于:不要用采集的文章來為自己的網站騙取搜索流量.這應該是符合互聯網道德規范和共識的.如果只讓原創的內容參與搜索引擎的游戲規則,而非原創部分屏蔽搜索引擎.這樣就能平稱地滿足搜索引擎、網站主、用戶三者的利益.
PHP編程于是問題歸結于一點:如何有效地、可靠地讓“部分文章屏蔽搜索引擎”?
PHP編程我不知道這是不是一個比較共性的問題,如果一個網站,既希望通過豐富的文章來滿足受眾,但又怕被搜索引擎判斷為采集站,那這個就是一個真真切切要面對的、關鍵的、核心的、關系到網站生存發展的大問題.
PHP編程最近也一直在學習相關方面的知識,以個人淺見,屏蔽搜索引擎有幾類方式:
一、用robots.txt
二、WP的站可以判斷用戶特征(看了你這篇博文后想到的)
三、通過JS封裝鏈接
四、通過重定向,比如短鏈接、PHP后臺重定向等
PHP編程對比以上幾種方式,
第一種方法:robots.txt好比在門上貼了封條:“嘿,蛛蛛,我這兒有些內容是不讓你檢索的”.這是所謂君子協定,搜索引擎一定有能力去看你貼著封條門內的東西,只是它不收錄罷了.為了判斷一個站是否有大量的采集內容,蛛蛛或許會有窺探的動機.
PHP編程這種方法技術實現的成本最低,也應該能滿足大多數情況.好象百度在這方面的操守還是可以放心的,比如不索引淘寶的內容,而且也很痛恨360對百度內容的索引.
PHP編程這個方法進一步的問題是:
在WP建的站中,如何可以高效率地讓“部分文章屏蔽搜索引擎”?
1、文章標題加特征:比如每篇文章的標題中加一個特殊字符,這個方法可行嗎,robots.txt用disallow:*特殊字條*就可以嗎?
2、文章的標簽識別:這個在操作層面好象是最最方便的,可是標簽似乎是動態的標記,無法在robotx.txt中篩選?
3、文章放進特定的目錄:這個robots.txt比較好寫的,然而在WP文章內容管理時如何簡易地操作?
PHP編程第二種方法:好比是查看進門者的身份證,如果訪問者是搜索引擎,那么就禁止通行.這種方法是對WP專用的,然后它的好處是可以非常詳細地區別對待,比如百度對采集的態度比較緊,而GOOGLE不太一樣,那有些文章就可以對百度關門而對谷歌開門.另外一個比較大的優點是,可以把判斷集成在WP環境中,比如通過插件或主題讓操作自動化.
PHP編程第三種方法:好比是在門上換了一個門牌,搜索引擎只知道機械地去跟蹤門牌上的號碼,而瀏覽器卻通過JS把門牌指向到另一個正確的入口了.然而:搜索引擎對JS的分析能力可能越來越強了,而且從谷歌的某些聲明中來看,搜索引擎也不太喜歡你的內容對人和搜索引擎不一樣.
這個方法大量地用在淘寶客鏈接的隱藏方面,這個方法的有效期估計不太長,而且操作比較麻煩,比較適合靜態的單獨頁面,不太適合WP這樣的數據庫組織文章的架構.
PHP編程第四種方法:好比是給門牌號加了密,只有你敲門(點擊)了,才給你換成正確的門牌號.一般的訪問者一定會點擊,而搜索引擎不會模擬點擊這個動作.
這種方法相對徹底和“安全”,缺點是:
1、和第三方法一樣操作有些復雜,適合靜態的單獨頁面,或頁面中局部的鏈接,不太適合WP的環境.
2、過多的重定向,應該會消耗服務器的運算資源,積少成多,如果大量的文章都要進行一次重定向,服務器可能會不堪重負.
PHP編程實現代碼
PHP編程具體怎么實現WordPress 對搜索引擎隱藏特定的文章呢?廢話不多說,直接上PHP代碼,放到當前主題的functions.php中即可使用(用UTF-8編碼另存為):
PHP編程
// 需要說明的是,如果你的WordPress站點開啟了頁面緩存,此功能無效
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;
//添加驗證字段
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" /> 屏蔽搜索引擎';
}
// 保存選項設置
function ludouse_save_postdata($post_id) {
// 驗證
if ( !isset( $_POST['ludou_allow_se_nonce']))
return $post_id;
$nonce = $_POST['ludou_allow_se_nonce'];
// 驗證字段是否合法
if (!wp_verify_nonce( $nonce, 'ludou_allow_se'))
return $post_id;
// 判斷是否自動保存
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
// 驗證用戶權限
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;
}
// 更新設置
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');
// 對于設置不允許抓取文章和頁面
// 禁止搜索引擎抓取,返回404
function do_ludou_allow_se() {
// 本功能只對文章和頁面有效
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)) {
// 下面是爬蟲Agent判斷關鍵字數組
// 有點簡單,自己優化一下吧
$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;
}
}
}
// 如果當前文章/頁面禁止搜索引擎抓取,返回404
// 當然你可以改成403
if($is_robots) {
status_header(404);
exit;
}
}
}
}
add_action('wp', 'do_ludou_allow_se');
PHP編程使用方法
PHP編程成功添加以上代碼到當前主題的functions.php后,我們就可以正常使用了,完全傻瓜式.在WordPress后臺文章和頁面的編輯頁面,右邊欄底部我們可以看到這樣的選框:
PHP編程
PHP編程如果當前文章/頁面需要禁止搜索引擎抓取,勾選即可.勾選后,當此文章/頁面被搜索引擎訪問時就會返回404狀態,無任何內容.如果你不喜歡給搜索引擎返回404,擔心死鏈太多影響SEO,可以將代碼中的:
PHP編程
status_header(404);
exit;
PHP編程改成:
PHP編程
echo "<meta name=\"robots\" content=\"noindex,noarchive\" />\n";
PHP編程再將:
PHP編程
add_action('wp', 'do_ludou_allow_se');
PHP編程改成:
PHP編程
add_action('wp_head', 'do_ludou_allow_se');
PHP編程這樣就直接在網頁的head部分添加meta聲明:
PHP編程
<meta name="robots" content="noindex,noarchive" />
PHP編程告訴搜索引擎不要索引本頁面、不要顯示快照.需要注意的是,你的主題目錄下的header.php中必須有以下代碼:
PHP編程
wp_head();
PHP編程
設置文章只允許搜索引擎查看
有些文章只是為了SEO才發布的,想讓這些文章只允許搜索引擎抓取,普通的訪客無法查看,在WordPress中如何做到?
PHP編程實現代碼
PHP編程如果你的WordPress站點未開啟頁面緩存,這個需求也不難實現,我們可以參考上面對搜索引擎隱藏特定的文章中的代碼,稍作修改即可.在當前主題的functions.php中添加以下php代碼,用UTF8編碼保存:
PHP編程
// 給文章和頁面的編輯頁添加選項
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;
//添加驗證字段
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" /> 只允許搜索引擎查看';
}
// 保存選項設置
function ludouseo_save_postdata($post_id) {
// 驗證
if ( !isset( $_POST['ludou_se_only_nonce']))
return $post_id;
$nonce = $_POST['ludou_se_only_nonce'];
// 驗證字段是否合法
if (!wp_verify_nonce( $nonce, 'ludou_se_only'))
return $post_id;
// 判斷是否自動保存
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $post_id;
// 驗證用戶權限
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;
}
// 更新設置
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() {
// 本功能只對文章和頁面有效
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判斷關鍵字數組
// 有點簡單,自己優化一下吧
$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;
}
}
}
// 如果不是搜索引擎,就顯示錯誤信息
// 已登錄的用戶不受影響
if(!$is_robots && !is_user_logged_in()) {
wp_die('您無權查看此文!');
}
}
}
}
add_action('wp', 'do_ludou_se_only');
PHP編程使用方法
PHP編程成功添加以上代碼到當前主題的functions.php后,我們就可以正常使用了,完全傻瓜式.在WordPress后臺文章和頁面的編輯頁面,右邊欄底部我們可以看到這樣的選框:
PHP編程
PHP編程如果當前文章/頁面需要禁止搜索引擎抓取,勾選即可.勾選后,當此文章/頁面被普通訪客訪問時就會顯示下面的錯誤信息(搜索引擎和已登錄用戶不受影響):
PHP編程
維易PHP培訓學院每天發布《PHP教程:WordPress特定文章對搜索引擎隱藏或只允許搜索引擎查看》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/7938.html