本文将为你分享一些WordPressSEO技巧,以前我没有花太多时间做搜索引擎优化,搜索引擎收录效果不是很好。
我不是什么SEO高手,但作为一个搞搜索的前端开发,或多或少知道一点,折腾一下算是自我陶醉,高人请绕道前行。
优化博客副标题
副标题(slogan),WordPress中称为tagline.它与博客标题不一样,可能会承载一些描述博客的文字,如我的副标题是"DEFCON笔记-JustAnotherWordPressBlog",其中的WordPressBlog被我设置为h1.因为我想告诉爬虫,这是一个关于WordPress的博客。
区分显示页面标题
页面的标题不要包含博客名称.,WordPress标题一般会用到bloginfo('name')和wp_title()两部分,前者是博客名称,后者是文章标题(如果标题不存在则不显示).经典主题和默认主题输出标题用的代码如下:
输出的标题结构是"文章标题?博客名称".
除非你的标题和文章内容相关度比较高,否则这样的标题对SEO显然是不好的。标题是爬虫认为重要的内容之一,如果标题中包含了与文章内容无关的信息,多少会对该页面有所影响。
那应该怎么弄呢?我们可以对不同类型的页面进行区分,实现代码如下:
// 如果是首页和文章列表页面, 显示博客标题
if(is_front_page() || is_home()) {
bloginfo('name');
// 如果是文章详细页面和独立页面, 显示文章标题
} else if(is_single() || is_page()) {
wp_title('');
// 如果是类目页面, 显示类目表述
} else if(is_category()) {
printf('%1$s 类目的文章存档', single_cat_title('', false));
// 如果是搜索页面, 显示搜索表述
} else if(is_search()) {
printf('%1$s 的搜索结果', wp_specialchars($s, 1));
// 如果是标签页面, 显示标签表述
} else if(is_tag()) {
printf('%1$s 标签的文章存档', single_tag_title('', false));
// 如果是日期页面, 显示日期范围描述
} else if(is_date()) {
$title = '';
if(is_day()) {
$title = get_the_time('Y年n月j日');
} else if(is_year()) {
$title = get_the_time('Y年');
} else {
$title = get_the_time('Y年n月');
}
printf('%1$s的文章存档', $title);
// 其他页面显示博客标题
} else {
bloginfo('name');
}
?>
Keywords(关键词)和Description(描述)
Keywords为搜索引擎提供网页包含的核心内容,Description则为搜索引擎提供网页的描述信息。
以下是我对keywords,description和页面标题的处理规则,实现方法可以参考上一段关于页面标题的说明.
页面类型KeywordsDescriptionTitle首页(frontpage)自定义keywords自定义description博客标题文章列表页面(index)自定义keywords自定义description博客标题文章详细页面(single)标签组合摘要或者文章前220个字符
(截取文章需要特殊处理全角字符)文章标题独立页面(page)标签组合文章前220个字符
(截取文章需要特殊处理全角字符.独立页面不支持摘要,有特殊需要可以创建页面模板)文章标题类目存档页面类目名称类目描述XXX类目的文章存档搜索页面搜索关键字XXX的搜索结果XXX的搜索结果标签存档页面标签名称标签描述XXX标签的文章存档日期存档页面日期XXX的文章存档XXX的文章存档其他页面留空页面标题博客标题
文章详细页面的描述一般取文章的前220个字符即可,特别重要的页面和文章可以自定义摘要,使其信息准确度更高.如果存在摘要信息则使用摘要,没有则使用前220个字符,实现代码如下:
if($post->post_excerpt){
$description=$post->post_excerpt;
}else{
//utf8_trim方法是为了在截取字符之前对字符串进行转义,避免出现截取半个汉字的情况
//参考文档:
$description=utf8_trim(substr(strip_tags($post->post_content),0,220));
}
?>
定义面包屑
面包屑在网站中起到导航的作用,便于搜索引擎进行索引。如果一个网站存在面包屑,在Google中看到的是路径索引,而不是文章链接。
使用h1,h2,h3,strong标签
h1给予文章标题或者与网站相关性高的推广性内容,而不是博客标题.比如:文章详细页面的h1给文章标题,因为相关度最高;h2是跟文章有关的描述式信息,如面包屑,分类和标签;h3是其他类似内容,如相关文章,小标题;strong给文章内的关键字.比如:本文第一段将strong放在"WordPressSEO技巧"这个词组上。
将RelatedPost改为MorepostsaboutXXX
其中XXX是关键字及其链接,本人建议使用分类或者标签链接代替。从SEO优化的角度来说,因为Related一词与几个文章的链接没有任何关系,但标签与之相关度很高。(一般相关文章是通过相似标签来确定的从用户体验的角度来说,没有太多人留意你的Tags是什么,不如将标签和相关文章结合现实.阿里巴巴速卖通的产品详细页面也类似这样做的,这是我2009年操刀搞上去的。
在类目页面和标签页面的添加概要描述
类目页面和标签页面都是用户呈现某写有相似内容的文章,但是文章肯定有其独有的侧重点,它们之间也存在一些差异。在文章列表之前放一段关于某该分类的描述,告诉爬虫这是一个归类为XXX的页面,XXX指的是什么,关键位置增加描述信息,可以让该分类获得更好权值。
WordPress的分类和标签都是可以添加描述信息的,在分类页面和标签页面,我建议在文章列表前先展示描述信息.一些网站标签超过,根本没有办法逐个填写,那么可以套用固定的语句,加上对应的标签作为其关键字.
与文章无关内容后移
很多爬虫都会爬取全页进行分析,但还有些爬虫只会分析页面的前N个字节的内容。无论是曝光次数还是分析次序,显然前面内容的权重相对会比较高。为了爬虫有效的收录,应该尽量将无关内容后移。如JavaScript等可以在DOMready时再执行。
这个博客顶部的很多与内容无关的内容其实都是放在页脚的,如搜索栏,订阅按钮都是放到页脚,在DOMready时通过CSS或者JavaScript重新定位来实现的.
消灭内嵌CSS和内嵌JavaScript
内嵌的CSS和JavaScript可能带有一些关键字和链接,而且拖慢页面加载速度,影响爬虫收录.尽量将这些写在外部文件中.
避免出现重复内容的文章
WordPress的评论分页可能导致多个重复内容的文章,会将某些关键词的权重分散了,有必要进行SEO优化。
为Readmore(阅读全文)链接加上nofollow
因为Readmore链接的路径实际和文章标题相同,没必要再多加一个文本与页面内容无关的链接。"Readmore..."在网站出现N多次,可能会干扰爬虫。
不要制作欢迎页面
很多朋友喜欢把博客首页做成欢迎页面,但因为大量链接链向首页,它是最重要的页面,应该尽量放置与博客相关的内容,我给两个建议:
直接使用文章列表页面作为首页,如defcon.cn但对于更新频繁的博客不是太好,页面因为没有固定的内容,关键词的信息会波动很大,建议上面写一段固定文字;制作一个频繁更新内容的文章导航页面,可以放置特色产品,热门文章和最新评论等内容。
优化文章列表页面
经过我长期的试验,切勿在文章列表页面展示所有文章内容。如果你的文章直接相关度都很高(比如:全站都是写SEO相关的文章),建议展现所有文章的摘要,如果文章之间相关度不高(比如:有时写SEO,、有时写WordPress、有时写前端、有时又招聘),那么只展示前三个文章的摘要即可。
向Google、百度等搜索引擎提交Sitemap
WordPress有很多自动生成sitemap的插件,GoogleXMLSitemaps是我用过最好的一个,按插件说明使用即可生成sitemap文件.,然后登录GoogleWebmasterTools,并向Google提交网站的sitemapXML文件。百度也是一样的,搜索百度站长工具即可。
使用伪静态URL作为固定链接
所谓伪静态就是从URL上看起来像是在访问静态文件,而实际上只是Web服务器对URL进行了重写,伪静态存在的URL有类似以下形式:
这样的URL形式有利于搜索引擎进行收录,据说对搜索引擎来说使用真静态和伪静态是没有区别的,而真静态的页面性能要好很多,其展示速度更快,几乎对服务器没有压力。
我建议使用两种形式的配置:
第一种:/%postname%.html
第二种:/%post_id%.html
第一种是[域名+文章]的形式,简短且便于记忆;第二种是[域名+类目+文章]的形式,内容丰富,如果类目层级较少(少于3级)且分类严谨合理能够获得更好的SEO效果。