[英]ASP.NET 3.5, googlebot, 301 Redirect “Cannot redirect after HTTP headers have been sent”
我在自定义HttpModule中设置了动态301重定向例程。 代码接受传入的URL,解析查询字符串,并使用配置和应用程序特定的逻辑,使用以下代码重定向到新的SEO友好URL:
if (HttpContext.Current.Response.IsRequestBeingRedirected)
return;
if (!HttpContext.Current.Response.IsClientConnected)
{
response.End();
return;
}
response.Redirect(newLocation, false);
response.Status = "301 Moved Permanently";
response.StatusCode = 301;
如果您直接在Web浏览器中输入旧URL,这可以正常工作。 但是,当googlebot(66.249.71.11)访问相同的URL时,我的事件日志显示了一堆“在发送HTTP标头后无法重定向”HttpExceptions。
我对这个问题是什么以及如何解决它感到茫然。
在ASP.NET 3.5中,Response.Redirect自动发送302(而不是301)并终止与客户端的连接。 如果要使用301,则必须手动插入所有标题。 类似于以下内容:
Response.Clear();
Response.Status = "301 Moved Permanently";
Response.AddHeader("Location","/about.aspx");
Response.End();
或者,您可以升级到ASP.NET 4.0,现在有一种方法可以指示某些内容已永久移动。
Response.RedirectPermanent("/about.aspx");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.