301重定向与负载均衡器azure c#

时间:2018-01-24 17:07:21

标签: c# azure redirect

我正在尝试使用以下代码进行301重定向:

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
{
    var url = HttpContext.Current.Request.Url.ToString().ToLower();
    var contentId = GetIdFromUrl(url);

    var forwardedHost = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_HOST"];
    var proxiedBrand = HttpContext.Current.Request.Headers["HOST"].ToLower();
    var isRedirectionTrue = IsRedirectionArticleInCollection(contentId);
    var isForwardedHostTrue = forwardedHost.Contains("old.com");
    var urlRedir = url.Replace("v3", "www").Replace("old.com", "new.com");

    Logger.Warn("urlredir: " + urlRedir + ", ContentId: " + contentId + ", Url:" + url + ", isRedirectionTrue: " + isRedirectionTrue + ", ForwardedHost:" + forwardedHost + ", Host: " + proxiedBrand + ", IsForwardedHostTrue: " + isForwardedHostTrue);
    if (contentId > 0 && isRedirectionTrue && isForwardedHostTrue)
    {
        var urlToRedirectTo = "https://dev.www.new.com/";// url.Replace("v3", "www").Replace("old.com", "new.com");
        HttpContext.Current.Response.Status = "301 Moved Permanently";
        HttpContext.Current.Response.StatusCode = 301;
        HttpContext.Current.Response.AddHeader("Location", urlToRedirectTo);
        HttpContext.Current.Response.Redirect(urlToRedirectTo, false);
        HttpContext.Current.Response.End();
    }
}

问题是重定向无效。无论我做什么,我都不会被重定向到新域名。如果我使用硬编码的示例dev.www.new.com它将转到dev.www.old.com域,同样的事情发生在完整的URL上。

我的重定向是否正确?

1 个答案:

答案 0 :(得分:0)

  

如果我使用硬编码的示例dev.www.new.com它将转到dev.www.old.com域,同样的事情会发生在完整的URL上。

如果你的代码是判断句子,它可以正确地到dev.www.new.com与完整的网址。 检查记录器并设置另一个登录,如果判断句子,以确保你遇到句子。

当然,您也可以使用 url rewrite 根据重写规则中表达的逻辑重定向。有关详细信息,请参阅此link

如果您仍有任何问题,请告诉我您当前的域名以及所需的重定向域名。