2010-04-26 3 views
0

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

старый Блог имел следующую структуру: 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 в web.config, который перенаправляет URL-адрес моему сценарию?

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

Спасибо заранее, Patrick

+0

Не было бы лучше использовать модуль перезаписи IIS (предполагая, что вы используете IIS7) для этого? – Alex

ответ

1

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

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

Смежные вопросы