June 19, 2007
关于WordPress重复内容处理插件的问题

5月的时候我写过一篇本站使用的WordPress插件, 介绍的最后一个插件名叫"Wordpress Duplicate Content Cure", 它的功能是"处理WordPress上的重复内容以增强SEO效果". 但是在试用了一周之后发现, 我发现在那些天写的一些文章没有被Google收录, 唯一能搜索到的相关信息只是http://hellobmw.com/feed, 即"RSS Feed输出过这些文章", 仅此而已. 思前想后最终将目光盯在了这款插件身上, 立刻禁用掉, 果然, 第二天, 之前没有被收录的文章已经出现在Google搜索结果中了. 这是为什么呢?
恰好昨天看到E-Space上的WordPress重复内容处理(有必要么?), 今天又看到Ozh的WordPress, Duplicate Content, and Wrong SEO Plugins, 顿时解开了对这款神秘的SEO插件的疑惑.
当我们写下一篇文章的时候, 除过文章本身, 在包含这篇文章的页面, 比方如首页, 当天归档页面, 当月归档页面, 当年归档页面, 目录页面中都会有"雷同"的内容, 而搜索引擎的机器人看到这样的4个, 5个或6个重复内容的时候, 它会试图找出最原始的内容而可能对其他重复内容降权处罚. 如果我们什么都不做, 让搜索引擎收录6次并自行决定哪个最优. 这是可行的. 不过由于以上原因, 可能会降低你在搜索引擎结果中的可见度, 如果想获得最佳的SEO效果, 不建议这样做.
因此, 诞生了这些处理重复内容的插件, 它们会在包含重复内容的页面上简单地加入元标签:
这样搜索引擎机器人看到此标签后就只是follow此页面上的链接, 而不对页面进行索引. 这个方法看上去很美, 实际效果却未必. 插件很可能会误用此标签在实际需要被收录的地方, 拿我本文开始提到的问题来说, 插件居然把Feed中的内容当作原始内容, 而把包含此内容的其他所有页面包含原始文章本身都标记为"noindex". 导致搜索引擎收录完全错误. 与其相信这类低IQ的插件, 还不如让搜索引擎全部收录自行决定权重好了.
那么究竟如何做才能既处理好重要内容的问题, 又达到良好的SEO效果呢?
我们需要更聪明地处理掉这些重要内容. Ozh的方法是: 除了单篇文章页面本身, 其他页面显示文章的时候都不要全文输出, 而代之以摘要. 所以他认为对重复内容进行处理根本只是主题(Theme)的职责而非插件. 我们需要的只是设计优秀的主题: 视觉效果要好, 标记使用要恰当, 可以跨浏览器正常显示等等, 而这样的主题必不可少一个专门为各种归档设计的模板文件: archive.php.
很多人可能要说了, 我的主题目录里面没这个文件呀? 的确, 十有七八的主题都缺少这个文件, 因为当WordPress发现没有archive.php时会调用index.php, 再加上对archive.php重视的普遍不足, 主题作者们一般都忽略了这个文件. 为了避免内容重复, 最好使用一个只显示摘要的archive.php文件, 以下是Ozh提供的代码, 复制再另存为archive.php放到当前使用的主题目录下面.
<div id="content">
<?php if (have_posts()) : ?>
<?php while ( have_posts() ) : the_post() ?>
<div class="post">
<h2><?php the_title(); ?></h2>
<div class="storycontent">
<p><?php
$short = get_the_excerpt();
if (strpos($short,'[...]') === false) $short.='[...]';
echo $short;
?>
→ <strong><a href="<?php the_permalink() ?>">Read more</a></strong></p>
</div>
</div> <!-- post -->
<?php endwhile ?>
</div> <!-- content -->
<?php get_sidebar(); ?>
<?php get_footer(); ?>
这样, 搜索引擎不仅不会认为你的页面存在重复内容, 而且还会把归档页面也进行收录, 这才是SEO的最好方法. 喜欢看英文的朋友, 建议看看Ozh的这篇文章.

fisio at 11:56 Jun 19, 2007 ₪
看了下我的 archive 果然是摘要 :em10:
5只小鸟 at 13:32 Jun 19, 2007 ₪
端午节快乐!
北极冰仔 at 17:27 Jun 19, 2007 ₪
也祝小鸟姐端午快乐. :em02:
hhalloyy at 16:53 Jun 20, 2007 ₪
其实我是觉得加meta标记最有效,不过要添加到header里还真要自己写语法,或者插件才行了。
先去都搞成摘要吧。
hhalloyy at 17:34 Jun 20, 2007 ₪
刚才在header.php里写了点代码,现在单篇日志和page都已经加了index, follow的meata标记,而其它页面全弄成了noindex。应该符合robots的标准了。过两天看看搜索引擎抓取的结果吧。
不过据说baidu根本不会管你robots,甚至还会换名字来强行抓取内容。
北极冰仔 at 17:46 Jun 20, 2007 ₪
@hhalloyy
这样写可以不?
< ?php if(is_single() or is_page()) { ?>
< ?php } else { ?>
< ?php } ?>
hhalloyy at 17:55 Jun 20, 2007 ₪
对,就是这样写的,呵呵
北极冰仔 at 17:57 Jun 20, 2007 ₪
好的, 我也试下看看疗效. :em01:
北极冰仔 at 18:04 Jun 20, 2007 ₪
啊对了, 忘了首页了…
< ?php if(is_single() or is_page()) { ?>
应该改为
< ?php if(is_single() or is_page() or is_home()) { ?>
hhalloyy at 18:10 Jun 20, 2007 ₪
嗯,其实主页内容还有重复的,但不收录你的域名主页真有点那个。。。。
还好我的home是个page,这样刚好, :em01:
北极冰仔 at 18:13 Jun 20, 2007 ₪
哈哈, 我想这样已经可以最大程度地减少重复了吧, 等过几天搜索一下最新收录的文章就可以看到效果如何啦. :em25:
David Lau at 15:57 Sep 15, 2008 ₪
我总算明白为什么我的博客Google老是很多文章都没有收录,原来是这类插件在作祟,我安装了Robots meta插件,晕吧!
顺便请教一下冰仔,你文中的代码和评论中的代码用的是什么插件显示的?谢谢!
北极冰仔 at 16:01 Sep 16, 2008 ₪
我的评论部分还是不好写代码,正文的代码是用iG-Syntax Hilight插件显示的,好久没碰插件了,拼写不一定正确,呵呵。
David+Lau at 21:25 Sep 16, 2008 ₪
我昨天使用了其中几款,发现和插件Exec-PHP有冲突,不过还是多谢了!
Hafidxu at 13:59 Sep 28, 2008 ₪
好文章,学习了,我最近也刚发现,大量的重复内容导致了wordpress的seo效果不好.