我正在尝试将旧的键盘博客重定向到使用wordpress运行的新博客(永久301重定向)。新博客也将在新服务器上。
旧博客具有以下结构: 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 all添加到web.config,将URL转发到我的脚本?
当我在oldURL字符串中使用“http://subdomain.domain.com/weblog/year/month/what-ever-article.html”时,重定向工作正常......所以我必须设置一些IIS或web.config设置错误。
提前致谢, 帕特里克
答案 0 :(得分:1)
我认为您需要为 html 页面添加处理程序,以便它们可以在asp.net下运行
您可以使用web.config上的 httpHandlers 添加html或iis来通过asp.net处理您的html或其他文件,并可以从您的过滤器传递。