I’m using a shared hosting account for my web site. I have no control over the
file types (extensions) that are handled by ASP.NET — only the standard file
extensions (ASPX, ASMX, etc.) are supported. By request, I was asked to make my old
RSS and Atom XML file feeds up to date with my new blog posts. During the
transitions I’ve made, I may have lost some subscribers as I hadn’t kept
them up to date as much as I would have liked.
So, with a wave of the magic ASP.NET wand and a little 404 magic, the two XML files
are now serving up content from my new WordPress installation. On my web host, I can
modify what pages handle 404 web server errors (file not found). I changed the
setting to point to a new ASPX file, appropriately named, 404.aspx. Here’s
what it contains:
<%@ Page Language="C#" %>
<%
string qstr = HttpUtility.UrlDecode(Request.QueryString.ToString());
if (qstr.Contains("index.xml") || qstr.Contains("atom.xml"))
{
string movedTo = "http://feeds.feedburner.com/wiredprairie";
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location", movedTo);
Response.End();
return;
}
Response.Status = "404 Not Found";
Response.End();
return;
%>
I grab the query string which
minimally contains the requested Url, and if it’s either atom.xml or
index.xml, I redirect to the FeedBurner location for the
RSS feed. If it wasn’t
one of those files, I just return a 404 error and quit (as I don’t have a
custom 404 page developed).
Of course, with a bit more robust coding, this could handle a wider variety of cases
and redirect to far more web pages. Or, you can just point to my RSS feed. :)