Blog安装、优化及创收技巧

让RSS Feed摆脱对FeedBurner的依赖

2007/04/30 | BlogsDiy · 5 回复

RSS Feeds应如何发布?一文中,我们探讨了在使用FeedBurner“烧制”RSS及使用FeedBurner提供的服务如订阅统计等时如何重新将RSS Feeds的管理权回收到自己掌控的几种策略。但客观地说来,那篇文章中的几种重定向方法,无论Header重定向、302/307还是301,都无法完全保证、确认用户订阅的是博客“自身的”RSS Feed,比如说,以博客学堂为例,我们希望用户订阅的Feed地址为“http://blogsdiy.org/feed/”,如果用户订阅时采用直接从网页中拷贝RSS Feed地址的方法,这一点是可以保证的,但当用户点击了页面右上方的RSS按钮后再进行订阅,则事实上该用户订阅的并不是我们期望中的“http://blogsdiy.org/feed/”而是“http://feeds.feedburner.com/blogsdiy”,因为此时重定向行为已经产生、完成了,这就必然造成有相当一部分RSS订阅用户仍然是通过FeedBurner 订阅的情况,而这显然与理想中的目标存在差距,一旦FeedBurner被GFW“墙”了,或者如果想将feed托管商从FeedBurner转向其他如FeedSky时,必然要损失一定的订阅量,想要“无损切换”恐怕是不可能的。

终极方案:彻底摆脱RSS Feed 对FeedBurner的依赖

为解决这一问题,需要进一步的调整。相比较而言,从笔者个人的理解角度看,也许Mark William Wielgus在其How to Get Feedburner Stats WITHOUT Using Feedburner On Your Blog提出的思路更接近于我们的目标。

其实现思路,简单地说,即在博客中不出现经FeedBurner“烧制”后的地址,用户订阅时使用博客自身的Rss Feed,但同时又能享受FeedBruner提供的统计服务。要做到这一点,需要对博客输出RSS的源文件进行简单修改。以WordPress为例,即修改wp-rss2.php(RSS 2.0)或wp-rss.php(RSS 0.92),在其php部分加入类似如下的代码:

$feedburnerfeed="http://feeds.feedburner.com/blogsdiy";
$ch = curl_init();
$useragent=$_SERVER[’HTTP_USER_AGENT’];
curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $feedburnerfeed);
$data = curl_exec($ch);
curl_close($ch);

当然,在实际应用时,需将$feedburnerfeed赋值为您的博客经FeedBurner“烧制”后的url。

通过这样的方式,可以保证用户始终使用位于博客网域内部的RSS url订阅,如我们的“http://blogsdiy.org/feed/”——事实上,在博客网站内的其他任何位置,不必出现任何有关经FeedBurner转换后的RSS信息——同时,Feed的订阅情况也都计入了FeedBurner的统计中。

对于不想自己动手修改代码的朋友,也可直接使用按这个思路实现的WordPress插件,Feedburner Feed Stats Plugin,上传到服务器上,激活即可。——这也是博客学堂推荐使用WordPress搭建博客的原因:某个功能只要您需要,总能找到别人提供的现成工具。 :P

注意事项与存在问题

  • 首先,如果您的WordPress使用了诸如Feedburner Plugin之类通过重定向Feed实现类似功能的插件,应禁用之。这点相信较易理解。
  • 其次,这样的方式只能记录基本的订阅量统计,而FeedBurner提供的其他服务,如Click Tracking等,则无法记录。当然,这也不难理解:用户订阅的Feed事实上与FeedBurner毫无关系嘛,用户点击Feed中的链接当然是FeedBurner所无法跟踪的。
  • 再就是当用户通过代理服务器订阅时,统计信息可能会有一定的偏差。
  • FeedBurner订阅量统计除了上述限制之外,还存在着一个有点矛盾的问题:相信大多数使用FeedBurner访问统计的博客在其页面上显示FeedCount(如右图)时,不是为了让自己了解博客RSS的订阅情况——毕竟网站自身的访问日志可以提供更详细的数据——而是为了向访问用户特别是潜在的订阅用户展示,比如说以一个庞大的数字显示博客的受欢迎程度,促发用户产生订阅行为,相比较而言,这类数字只能通过第三方的统计而不是博客网站自身随便拿出的数据才具有可信性。但是,FeedCount图标默认链接至经“烧制”后的位于FeedBurner的RSS地址,如果用户通过该图标订阅,同样又出现了本文开始时所言的情形,即用户订阅的Feed为“http://feeds.feedburner.com/blogsdiy”。——当然,我们可以修改FeedBurner提供的FeedCound代码,将链接改为如“http://blogsdiy.org/feed/”,不过我不清楚FeedBurner的政策是否允许。

至于说仅仅为了订阅量的统计这么做是不是值得,则兜了一圈又回到了最初,回到了RSS Feeds与FeedBurner的困惑中探讨的问题,有没有必要将RSS Feed交由FeedBurner“烧制”或托管?

→ 版权声明分类: 博客策略

  • 欢迎订阅博客学堂RSS Feeds

当前共计5 回复 ↓

  • 1 博客联盟 | 2007/04/30 6:06 pm

    MyAvatars 0.2

    这确实是个问题。
    到底是为了安全,还是为了方便?
    挺折腾人的。

TrackBacks ↓

  1. 插件推荐 Feedburner Feed Stats Plugin - Nicky's blog
  2. 博客秀第11辑:有事没事多笑笑 - 博客联盟,致力于帮助博客新手
  3. 重剑无锋 » Blog Archive » 转载:博客创建、优化教程全系列
  4. 转载:博客创建、优化教程全系列 | 重剑无锋

留下您的评论

[→ 留言须知]