簡體   English   中英

ASP.NET 3.5,googlebot,301重定向“在發送HTTP標頭后無法重定向”

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM