我在自定义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;
如果您直接在网络浏览器中输入旧网址,这样可以正常使用。但是,当googlebot(66.249.71.11)访问相同的URL时,我的事件日志显示了一堆“在发送HTTP标头后无法重定向”HttpExceptions。
我对这个问题是什么以及如何解决它感到茫然。
答案 0 :(得分:2)
在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");