0

我有这个场景,我的网站 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/ 时,会调用父站点中的 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();


    }
4

1 回答 1

0

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

所以所有的请求和重定向都会导致Application_BeginRequest()触发。

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

于 2013-01-03T05:39:42.200 回答