这是进行301重定向的正确方法吗?

时间:2010-02-24 19:52:54

标签: asp.net redirect http-status-code-301

当我使用这些在线主机标题分析器检查我的页面时,该页面显示200 OK。

但是在我的浏览器中查看时,它会重定向到另一个网站(这就是我想要的方式)。

我使用的代码是:

 context.Response.Status = "301 Moved Permanently";
 context.Response.AddHeader("Location", "http://www.example.com/article" + articleID);
 context.Response.End();

我将此代码放在HttpModule

它正在工作,因为当你尝试点击网址时,它会进行重定向。 它似乎没有返回正确的http标头。

有什么不对吗?

5 个答案:

答案 0 :(得分:1)

在添加标题之前,请确保响应缓冲区完全清除:

context.Response.Clear();
context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location", "http://www.example.com/article" + articleID);
context.Response.End();

答案 1 :(得分:1)

<强>尝试:

context.Response.StatusCode = 301;
context.Response.StatusDescription = "Moved Permanently";
context.Response.RedirectLocation = "http://www.example.com/article" + articleID;
context.Response.End();

我在自定义模块中使用上述内容,它确实返回了正确的301 HTTP响应。

答案 2 :(得分:1)

您的代码完全正确。我已经使用了你多年来所拥有的东西:

context.Response.Status = "301 Moved Permanently";
context.Response.AddHeader("Location",URL);
context.Response.End();

答案 3 :(得分:0)

你可以尝试使用: HttpContext.ApplicationInstance.CompleteRequest()

而不是Response.End()?

答案 4 :(得分:0)

当我在Web Development Helper中使用HTTP日志记录时,我看到了301和200.所以,是的,你的代码是正确的。