저는 기존의 타이프 패드 블로그를 워드 프레스로 실행되는 새로운 블로그 (영구 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 설정이 잘못되어 있어야합니다. 사전에
감사합니다, 패트릭
IIS rewriter 모듈 (IIS7을 사용한다고 가정)을 사용하는 것이 더 좋지 않습니까? – Alex