httpHandler - subfolder issue

Posted by Patto on Stack Overflow See other posts from Stack Overflow or by Patto
Published on 2010-04-26T17:09:04Z Indexed on 2010/04/26 17:13 UTC
Read the original article Hit count: 319

Filed under:
|
|
|

Hi, I am trying to redirect my old typepad blog to my new blog (permanent 301 redirect) that runs with wordpress. The new blog will also be on a new server.

the old Blog had the following structure: http://subdomain.domain.com/weblog/year/month/what-ever-article.html

The new Blog looks like this: http://www.domain.com/Blog/year/month/what-ever-article.html

I am using an http handler that I found online and tried to work with it:

    public class MyHttpModule :IHttpModule 
{ 


public MyHttpModule() 
    { 
        // 
        // TODO: Add constructor logic here 
        // 
    } 
#region IHttpModule Members 

public void Dispose() 
{ 

} 

public void Init(HttpApplication context) 
{ 
    context.BeginRequest += new EventHandler(context_BeginRequest); 
} 

void context_BeginRequest(object sender, EventArgs e) 
{
    string oldURL = System.Web.HttpContext.Current.Request.Url.ToString();
    string newURL = String.Empty;
    //oldURL = 

    if (oldURL.ToString().ToLower().IndexOf("articles") >= 0 || System.Web.HttpContext.Current.Request.Url.ToString().ToLower().IndexOf("weblog") >= 0)
    {
        newURL = oldURL.Replace("subdomain.domain.com/weblog", "www.domain.com/Blog/index.php");
        if (newURL.ToLower().Contains("subdomain"))
        {
            newURL = "http://www.domain.com/Blog";
        }
    }
    else
    {
        newURL = "http://www.domain.com/Blog";
    }
    System.Web.HttpContext.Current.Response.Clear();
    System.Web.HttpContext.Current.Response.StatusCode = 301;
    System.Web.HttpContext.Current.Response.AddHeader("Location", newURL);
    System.Web.HttpContext.Current.Response.End();
} 
#endregion 

}

To use this code, I put the handler into the web.config

        <httpModules>
        <add name="MyHttpModule" type="MyHttpModule, App_Code"/>
    </httpModules>

The issue that I have is that when I want to redirect from the http://subdomain.domain.com/weblog/year/month/what-ever-article.html, I get an error that the folder would not exist.

Is there any way to change my script or add an catch all to the web.config that forwards the URL to my script?

When I use "http://subdomain.domain.com/weblog/year/month/what-ever-article.html" in oldURL string, then the redirect works just fine... so I must have some IIS or web.config settings wrong.

Thanks in advance, Patrick

© Stack Overflow or respective owner

Related posts about ASP.NET

Related posts about c#