如何在asp.net中进行301永久重定向

时间:2011-01-21 04:34:34

标签: asp.net http redirect

你可以告诉我,如何在asp.net中进行301永久重定向?

我在Global.asax文件中编写了代码,但我的网络客户端说它无法正常工作,

我在Global.asax文件中写了以下代码:

    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://lsatfreedom.com"))
        {
            HttpContext.Current.Response.Status =
                "301 Moved Permanently";
            HttpContext.Current.Response.AddHeader("Location",
                Request.Url.ToString().ToLower().Replace(
                    "http://lsatfreedom.com",
                    "http://www.lsatfreedom.com"));
        } 

    }

有用吗? 请帮忙。

由于

4 个答案:

答案 0 :(得分:2)

首先尝试查看此重定向是否适用于页面加载。 如果是,则使用Begin_Request进行尝试。

希望这能为您提供一些线索:

private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","http://www.new-url.com");
}

答案 1 :(得分:2)

我认为您遗失了Response.Clear()Response.End(),请尝试使用此功能。

例如:

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
"http://lsatfreedom.com"))
        {
           string sNewPage = Request.Url.ToString().ToLower().Replace(
                    "http://lsatfreedom.com",
                    "http://www.lsatfreedom.com");

            Response.Clear();
            Response.Status = "301 Moved Permanently";
            Response.AddHeader("Location", sNewPage);
            Response.End();
        } 
    }

答案 2 :(得分:1)

我相信你错过了CompleteRequest()

所以你的代码应该是这样的:

    if (HttpContext.Current.Request.Url.ToString().ToLower().Contains(
        "http://lsatfreedom.com"))
    {
        HttpContext.Current.Response.Status =
            "301 Moved Permanently";
        HttpContext.Current.Response.AddHeader("Location",
            Request.Url.ToString().ToLower().Replace(
                "http://lsatfreedom.com",
                "http://www.lsatfreedom.com"));
       CompleteRequest();
    } 

如果你没有添加CompleteRequest,那么ASP.Net将尝试自己处理它,在这种情况下标题可能存在,但在开始响应和结束它之间实际上可能会覆盖Status。这样做会使您无法获得实际的重定向。

答案 3 :(得分:1)

我会更改web.config并从此答案中添加以下规则。

Forwarding http://mydomain.com/ctrlr/act/val to http://WWW.mydomain.com/ctrlr/act/val

这就是我们添加www

的方式
相关问题