一款WordPress插件稍作改造兼顾FeedSky与FeedBurner

FeedBurner出问题之后,我当天就用“Permalink重定向插件”把Permalink重定向到了Feedsky,然而,今天猛然发现Feedsky几天没有更新我的RSS了。仔细一看,发现一个“死循环”问题:我的Feedsky请求RSS时,又被302重定向到了Feedsky自己,所以内容毫无改变……

于是,连同很久之前的一个疑惑,我打开了“Permalink重定向插件”的源文件。发现和我的推测还是一致的:该插件将选择性地进行302返回。即,所有FeedBurner的请求不做302重定向,而来自其他方式的请求,全部返回给302重定向。这样做的好处大家仔细想想,不言而喻。

今天在Magike的帮助下,改善了这个函数,让Feedsky也可以“兼容”了。只需要将“redirect_feedburner”函数改写为如下内容,就可以了:

function redirect_feedburner() 
{
    global $withcomments;
    if (is_feed() && !is_archive() && !$withcomments) {
        if (!(strpos($_SERVER['HTTP_USER_AGENT'],'FeedBurner')!==FALSE || 
strpos($_SERVER['HTTP_USER_AGENT'],'Feedsky')!==FALSE))
        {
        if (($feedburner = get_settings('permalink_redirect_feedburner')))
            {
                $brand = get_settings('permalink_redirect_feedburnerbrand');
                $brand = $brand ? $brand : 'feeds.feedburner.com';
                $this->redirect("http://$brand/$feedburner", 302);
            }
        }	
    }
}

结论:

  1. Permalink原函数的逻辑似乎很奇怪,而且有几个荒废函数没起到作用(例如is_feedburner,is_skip),争取联系一下作者(还是个华裔澳洲人)改善一下
  2. IE7和Firefox都会对301、302做Cache,这让我的调试非常不爽,好在Magike帮我写了一个CURL的请求方式,可以直接获得返回详细情况
  3. FeedSky在高频Ping下会停止Ping功能,不过大约5分钟后又恢复
  4. 当今环境下,除了你自己的域名以外,没有任何域名是靠谱的。
  5. 请WordPress博客们使用Permalink Redirect吧,是个好东西:)
  6. 从我这几天的访问数据来看,RSS这个东西的稳定性和时效性还是非常重要的,它将会直接影响订阅量、访问量,所以,必须派重兵照看:)
  7. 不同于301,302是临时重定向,这也从思想上和第4点吻合
Advertisements

6 thoughts on “一款WordPress插件稍作改造兼顾FeedSky与FeedBurner

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.