I'm not sure exactly how long ago, I'm guessing over a month, Feedburner changed the way their feeds are handled and broke my homepage. It wasn't until this week that I discovered the problem. And then it took several days to figure out what was going wrong. Now that it is resolved, I thought it might be nice to pass along the fix in case anyone else is having similar issues.
I import my blog feed into my site's homepage. It seemed like a good idea to put the latest articles there. To distribute my feed, I've been using Feedburner because of all the handy features they provide for at no charge. Recently when I went to take a gander at my home page to my horror, the articles section was blank. GASP! Turning on error reporting revealed that my feed parser was getting a "404 Page not found" response from Feedburner. However, when I view the feed in my browser, it showed up fine.
Apparently Feedburner and other Google feed distributors have waged war against bad feed readers that don't properly cache results. Depending on the number of page views, these readers can end up requesting a feed thousands of times a day. A cached feed need only be updated sporadically throughout the day.
Fight Fire with Fake UserAgents
The way that Feedburner and Blogger decipher whether a feed is coming from a credible source, or from an abusive one is via the User Agent. Anything that doesn't have a User Agent defined, or that has the User Agent defined as one of the offending services gets the "404 Page not found" error. Regular browsers like Firefox, and Internet Explorer get the feed without any hiccups.
In my case, my original feed parser wasn't passing a user agent when it made the request, so it got a 404 error. Thinking my parser was broken I switched to SimplePie. SimplePie got the same error which is when I started to investigate further. While SimplePie does use a valid useragent, it has been blacklisted by Google. Apparently a lot of developers using SimplePie run it with caching disabled. To finally get it working I had to remove the SIMPLEPIE_USERAGENT from the useragent string. It is a simple fix in SimplePie if you know to do it. I just added the following line as explained in the SimplePie API.
Despite endorsing these sneaky habits, I'd like to go on the record as supporting being a good netizen and caching all of your external sources locally. Your site will be faster because it won't have to reload the feed each time a user visits the page, and you won't be burning up someone else's bandwidth as well. It's a win-win.
Depending on the feed parser you are using, you may have a more difficult time setting the useragent to properly bypass this issue. Here are a couple of other links that may help.
And there you have it. Now you have to tools to fix your broken feed requests. At least until something else breaks.
So right before publishing this, I find out that Feedburner is about to burn out completely. Feb 28th is the final day to move your feeds over to Google. After that your feed links will return a 404 File Not Found error. More info on the move here: http://www.dailyblogtips.com/time-to-switch-from-feedburner-to-google/ I'll be transferring my feed right now.