之前是做301定向是在每個頁面調用一個方法的,原文http://www.cnblogs.com/hakuci/archive/2010/11/19/1881681.html
現在利用Web.config的HttpModule 實現整站301永久重新導向
具體方法如下:
1在web.config加入配置
<configuration>
<appSettings>
<add key="WebDomain" value="wecanwecan.com"/>
<add key="URL301Location" value="www.wecanwecan.com"/>
</appSettings>
2,在當前解決方案下建立一個類庫項目
3,建立一個cs,我這裡粗陋的命名一下:ChangeDomain.cs
using System;
using System.Web;
using System.Configuration;
namespace ChangeDomain
{
public class RedirectNewDomain : IHttpModule
{
public void Dispose()
{
}
public void Init(HttpApplication context)
{
context.AuthorizeRequest += (new EventHandler(Process301));
}
public void Process301(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpRequest request = app.Context.Request;
string lRequestedPath = request.Url.DnsSafeHost.ToString();
string strDomainURL = ConfigurationManager.AppSettings["WebDomain"].ToString();
string strWebURL = ConfigurationManager.AppSettings["URL301Location"].ToString();
if (lRequestedPath.IndexOf(strWebURL) == -1)
{
app.Response.StatusCode = 301;
app.Response.AddHeader("Location", lRequestedPath.Replace(lRequestedPath, "http://" + strWebURL + request.RawUrl.ToString().Trim())); //這裡面的網域名稱根據自己的實際情況修改
app.Response.End();
}
}
}
}
寫完這個基本就ok了。剩下的就是在web.config裡註冊一下就好了。
<httpModules>
<add name="ChangeDomain" type="ChangeDomain.RedirectNewDomain, ChangeDomain" />
</httpModules>
上面的命名也是我這邊的粗陋命名,具體的web.config註冊寫法如下:
<add name="隨便命名" type="HttpModule命名空間加類名,dll檔案名稱" />