Я пытаюсь перенаправить свой старый блог с типом в свой новый блог (постоянный 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
Не было бы лучше использовать модуль перезаписи IIS (предполагая, что вы используете IIS7) для этого? – Alex