wordpress的文章中,经常会带有链接,包含站内链接和站外链接。如果是站内链接,一般是在新窗口中打开。而对于站外链接,需要注意加上rel=”nofollow”属性,告诉搜索引擎”不要追踪此网页上的链接或不要追踪此特定链接。这两点看似不重要,但是却是影响体验及SEO的重要点。
nofollow是一个HTML标签的属性值。它的出现为网站管理员提供了一种方式,即告诉搜索引擎”不要追踪此网页上的链接”或”不要追踪此特定链接”。
nofollow标签是一个“反垃圾链接”的标签,告诉搜索引擎这个链接不是经过作者信任的,引用nofollow标签的目的是:用于指示搜索引擎不要追踪(即抓取)网页上的带有nofollow属性的任何出站链接,以减少垃圾链接的分散网站权重!
简单的说就是,如果A网页上有一个链接指向B网页,但A网页给这个链接加上了 rel=”nofollow” 标注,则搜索引擎不把A网页计算入B网页的反向链接。搜索引擎看到这个标签就可能减少或完全取消链接的投票权重。
在functions.php的地步加上以上代码即可,非常重要的一步
// 文章外部链接加上nofollow add_filter( 'the_content', 'cn_nf_url_parse'); function cn_nf_url_parse( $content ) { $regexp = "]*href=(\"??)([^\" >]*?)\\1[^>]*>"; if(preg_match_all("/$regexp/siU", $content, $matches, PREG_SET_ORDER)) { if( !empty($matches) ) { $srcUrl = get_option('siteurl'); for ($i=0; $i < count($matches); $i++) { $tag = $matches[$i][0]; $tag2 = $matches[$i][0]; $url = $matches[$i][0]; $noFollow = ''; $pattern = '/target\s*=\s*"\s*_blank\s*"/'; preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE); if( count($match) < 1 ) $noFollow .= ' target="_blank" '; $pattern = '/rel\s*=\s*"\s*[n|d]ofollow\s*"/'; preg_match($pattern, $tag2, $match, PREG_OFFSET_CAPTURE); if( count($match) < 1 ) $noFollow .= ' rel="nofollow" '; $pos = strpos($url,$srcUrl); if ($pos === false) { $tag = rtrim ($tag,'>'); $tag .= $noFollow.'>'; $content = str_replace($tag2,$tag,$content); } } } } $content = str_replace(']]>', ']]>', $content); return $content; }
此代码会自动给文章及页面的站外链接添加nofollow属性(rel=”nofollow”),并且在新窗口打开这些链接(即添加 target=”_blank”属性)。如果已手动给链接添加 rel=”dofollow”或target=”_blank”,就不会重复添加对应属性。