This makes for an odd first blog, but if I wait until everything’s “just so”, I’ll never get anything posted.  In theory, my site should exist at http://blog.jaredreisinger.com.  This works, but you may notice that all of the intra-site links start with http://blog.jaredreisinger.com/jaredreisinger-blogengine.web/. This is because GoDaddy’s shared domain hosting (where you have more than one domain hosted from the same account) injects the hosting directory into the incoming URL.  My apologies for getting technical; they won’t all be this way...

If you’re familiar with the way that HTTP works, you know that a request for “http://blog.jaredreisinger.com” really means that a connection is made to “blog.jaredreisinger.com”, and a HTTP request is sent that looks something like:

GET / HTTP/1.1
Host: blog.jaredreisinger.com

The “Host:” line tells the server that even though it might be hosting many, many sites, the request for “/” is specific to “blog.jaredreisinger.com”.  What should happen is that even if the document is served from a subdirectory, the RawUrl property should be “/”.  Instead, GoDaddy seems to be injecting the subdirectory right into the original request, making it “/jaredreisinger-blogengine.web/”.  Since I’m being hosted on IIS7, they shouldn’t really need to pre-inject the path... IIS7 can read the “Host:” header (as could IIS6 before it) and correctly map to a subdirectory.  In fact, one of the nice things about IIS’s default handling is that a web-app can distinguish when it’s being accessed through different virtual paths.

If I wrote all of my web applications myself, this wouldn’t be a problem.  There are many, many existing applications though (BlogEngine.NET, DotNetNuke), that use the application root directory to create internal links.  These applications will “leak” the hosting directory into the URL, which may not be what one expects or wants!  (That these applications aren’t using purely relative links in the first place is a separate, but also intriguing, issue.)

So what to do?  Fortunately, as a developer, I’m willing to customize some of my applications to work around GoDaddy’s broken behavior.  I’m going to do so with BlogEngine.NET.  There’s no way that I’d try to do so with DotNetNuke.  If I’m lucky, I’ll convince the folks on BlogEngine.NET to switch to truly-relative links, so I won’t have to maintain a one-off version of the source.

Update: This is mostly fixed now!

Comments are closed