httpHandler - проблема с подпапками - PullRequest
0 голосов
/ 26 апреля 2010

Я пытаюсь перенаправить свой старый блог с печатной машинкой на мой новый блог (постоянное перенаправление 301), который работает с WordPress. Новый блог также будет на новом сервере.

старый блог имел следующую структуру: 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,, появляется сообщение об ошибке, что папка не существует.

Есть ли способ изменить мой скрипт или добавить перехват всех в web.config, который пересылает URL моего скрипта?

Когда я использую "http://subdomain.domain.com/weblog/year/month/what-ever-article.html" в строке oldURL, перенаправление работает нормально ... поэтому у меня должны быть неправильные настройки IIS или web.config.

Заранее спасибо, Patrick

1 Ответ

1 голос
/ 26 апреля 2010

Я думаю, что вам нужно добавить обработчики для страницы html , чтобы они могли работать под asp.net

Вы можете использовать httpHandlers на web.config для добавления html или iis для обработки html или других файлов через asp.net и передавать их из фильтра.

...