我正在尝试使用以下代码进行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上。
我的重定向是否正确?
答案 0 :(得分:0)
如果我使用硬编码的示例dev.www.new.com它将转到dev.www.old.com域,同样的事情会发生在完整的URL上。
如果你的代码是判断句子,它可以正确地到dev.www.new.com与完整的网址。 检查记录器并设置另一个登录,如果判断句子,以确保你遇到句子。
当然,您也可以使用 url rewrite 根据重写规则中表达的逻辑重定向。有关详细信息,请参阅此link。
如果您仍有任何问题,请告诉我您当前的域名以及所需的重定向域名。