2010-04-26 3 views
0

저는 기존의 타이프 패드 블로그를 워드 프레스로 실행되는 새로운 블로그 (영구 301 리디렉션)로 리디렉션하려고합니다. 새 블로그는 새로운 서버에도 추가됩니다. http://subdomain.domain.com/weblog/year/month/what-ever-article.htmlhttpHandler - 하위 폴더 문제

새로운 블로그는 다음과 같습니다 : 내가 온라인으로 발견하고 작업을 시도 HTTP 처리기를 사용하고 http://www.domain.com/Blog/index.php/year/month/what-ever-article.html

:

기존의 블로그는 다음과 같은 구조를 가지고 있었다

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 

}

이 코드를 사용하려면, I P Web.config의

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

나는 내가 http://subdomain.domain.com/weblog/year/month/what-ever-article.html에서 리디렉션 할 때, 나는 폴더가 존재하지 않을 것이라고 오류가 발생한다는 것입니다이 문제에 핸들러를 유타.

내 스크립트를 변경하거나 스크립트에 URL을 전달하는 web.config에 캐치를 모두 추가 할 수있는 방법이 있습니까?

oldURL 문자열에 "http://subdomain.domain.com/weblog/year/month/what-ever-article.html"을 사용하면 리디렉션이 정상적으로 작동하므로 일부 IIS 또는 web.config 설정이 잘못되어 있어야합니다. 사전에

감사합니다, 패트릭

+0

IIS rewriter 모듈 (IIS7을 사용한다고 가정)을 사용하는 것이 더 좋지 않습니까? – Alex

답변

1

난 당신이 HTML 페이지에 대한 처리기를 추가 할 필요가 있다고 생각, 그래서 그들은

당신은 httpHandlers을에 사용할 수있는 asp.net에서 실행할 수 있습니다 web.config를 사용하여 html을 추가하거나 iis를 사용하여 asp.net을 통해 HTML 또는 기타 파일을 처리하고 필터에서 전달할 수 있습니다.