很多 WordPress 的個人博主在建立部落格後會經常寫一些生活中的瑣碎小事,但是那些文章是完全不會給網站從搜尋引擎帶來流量的,如果這些文章在站內展示率或出現率太高這樣就會把需要權重的頁面的權重給分散了。為了不讓權重分散我們就只好用 robots.txt 來遮蔽該目錄下的文章了。

有些博主不希望這類頁面把站點的權重分散了,但是又想讓搜尋引擎收錄這些頁面那該怎麼辦呢?這樣我們可以用 nofollow 屬性來控制頁面間權重的傳遞。

首先我們來看看百度官方對 nofollow 屬性的解釋:

最初,"Nofollow" 屬性出現在網頁級元標記中,用於指示搜尋引擎不要追蹤 (即抓取) 網頁上的任何出站連結。

例如:

<meta name="robots" content="nofollow" />

而後,在將"Nofollow" 用於各個連結前,我們需要完成大量的工作 (例如,將連結重定向至 robots.txt 中攔截的網址),以阻止蜘蛛追蹤某網頁上的各個連結。因此,我們建立了 rel 屬性的"Nofollow" 屬性值。這可讓網站管理員更精確地進行控制:無需指示搜尋引擎和漫遊器不要追蹤該網頁的所有連結,只需輕鬆地指示蜘蛛不要抓取某特定連結即可。

例如:

<a href="signin.php" rel="nofollow">signin</a>

以上內容引自百度百科。

  從百度百科的解釋來看我們就可以很好的利用 nofollow 屬性來禁止蜘蛛在站內頁面上來抓取某些連結,僅僅是在站內控制蜘蛛抓取連結,但爬蟲依然會收錄這些頁面正好我們就可以利用這點來控制站內權重的分散了。雖然 nofollow 屬性可以控制內頁的抓取,但是一條一條的去改屬性顯然不現實。 WordPress 官方正好又提供了輸出連結屬性的函式。

function nofollow_cat_posts($text) {
global $post;
        if( in_category(1) ) { // 將 1 替換成你要輸出 nofollow 連結的目錄 id
                $text = stripslashes(wp_rel_nofollow($text));
        }
        return $text;
}
add_filter('the_content', 'nofollow_cat_posts');

只要將以上程式碼加入到你當前使用的主題的 functions.php 裡就行了。