何时在父站点中调用Application_BeginRequest

时间:2013-01-03 05:36:32

标签: c# asp.net webforms

我有这个senario,我的网站www.skinb5.com应该重定向到www.skinb5.com/au/

和www.skinb5.com/au应直接访问www.skinb5.com/au和www.skinb5.com/us

应该访问www.skinb5.com/us。

www.skinb5.com是一个父网站,几乎没有什么可以重定向。 / au /和/ us /是坐在它下面的儿童网站。

请查看我的父网站中我的Global.asax文件,其中唯一的重定向发生。

问题是,当我去www.skinb5.com/us/时它会返回200,这很好。但是

www.skinb5.com/au/它返回302到www.skinb5.com/au/。虽然它没有进入无限循环,但我担心它为什么会返回302.

您可能希望在此处http://www.internetofficer.com/seo-tool/redirect-check/

进行测试

我的问题是,当我直接调用www.skinb5.com/au/时,是否会调用parentite中的application_beginRequest?它不应该直接去儿童网站吗?如果是这样,302重定向是如何发生的。

protected void Application_BeginRequest(object sender, EventArgs e)
    {
        var redirectSite = "au";
        HttpCookie languageCookie = HttpContext.Current.Request.Cookies.Get("Customer.SelectLanguageID");
        if (languageCookie != null)
        {
            redirectSite = languageCookie.Value.Split('-')[1];

        }

        string rawUrl = HttpContext.Current.Request.RawUrl;
        if (string.IsNullOrEmpty(rawUrl))
        {
            rawUrl = "/";
        }

        rawUrl = redirectSite + rawUrl;
        bool useSsl = IsCurrentConnectionSecured();
        var storeHost = GetStoreHost(useSsl);
        if (storeHost.EndsWith("/"))
            storeHost = storeHost.Substring(0, storeHost.Length - 1);
        string url = storeHost + '/' + rawUrl;
        url = url.ToLowerInvariant();
        HttpContext.Current.Response.Redirect(url, true);
        HttpContext.Current.Response.End();


    }

1 个答案:

答案 0 :(得分:0)

重定向告诉浏览器加载不同的URL。浏览器就像在地址栏中输入新URL一样。这是一个像其他任何请求。

因此,所有请求和重定向都会导致Application_BeginRequest()触发。

如果您不希望它对重定向的请求执行任何操作,则需要测试目标URL并确定是否要采取任何操作。