httpHandler - 子文件夹问题

时间:2010-04-26 17:09:04

标签: c# asp.net httphandler http-status-code-301

我正在尝试将旧的键盘博客重定向到使用wordpress运行的新博客(永久301重定向)。新博客也将在新服务器上。

旧博客具有以下结构: http://subdomain.domain.com/weblog/year/month/what-ever-article.html

新博客如下所示: http://www.domain.com/Blog/index.php/year/month/what-ever-article.html

我正在使用我在网上找到的http处理程序并尝试使用它:

    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 

}

要使用此代码,我将处理程序放入web.config

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

我遇到的问题是,当我想从http://subdomain.domain.com/weblog/year/month/what-ever-article.html重定向时,我收到一个错误,指出该文件夹不存在。

有没有办法更改我的脚本或将一个catch all添加到web.config,将URL转发到我的脚本?

当我在oldURL字符串中使用“http://subdomain.domain.com/weblog/year/month/what-ever-article.html”时,重定向工作正常......所以我必须设置一些IIS或web.config设置错误。

提前致谢, 帕特里克

1 个答案:

答案 0 :(得分:1)

我认为您需要为 html 页面添加处理程序,以便它们可以在asp.net下运行

您可以使用web.config上的 httpHandlers 添加html或iis来通过asp.net处理您的html或其他文件,并可以从您的过滤器传递。