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