为什么ASP / ASP.NET Response.Redirect使用HTTP-302状态代码(“暂时移动”),即使在大多数情况下HTTP-301状态代码(“永久移动”)更合适?
答案 0 :(得分:40)
状态301的响应应该是可缓存的,我认为您不希望大多数ASP / ASP.NET重定向的行为。
如果需要,ASP.NET 4.0具有RedirectPermanent方法。
答案 1 :(得分:9)
Response.Redirect
的一个常见用例是在回发后将用户移动到服务器端代码中的另一个页面,例如
private void MyButton_Click(object sender, EventArgs e)
{
if (some condition) {
Response.Redirect("ShowProduct.aspx");
} else {
Response.Redirect("SorryOutOfStock.aspx");
}
}
在这些情况下,301将是完全错误的。事实上,我认为上述情况(在一些UI交互后有条件地将用户移动到另一个页面)是Response.Redirect
比使用真实此页面移动的更常见的用法 - 到另一个URL永远的场景(返回代码301是合适的)。
答案 2 :(得分:2)
除了Heinzi的答案之外,网上唯一可能会注意301的实体将是搜索引擎。大多数浏览器不会跟踪和记录301,以便自动重定向任何后续的初始URL请求。浏览器对301的处理方式与302处理方式相同。因此,动态内容中的302(例如在ASP.NET中生成)非常合适。
答案 3 :(得分:-1)
您获得的错误不是由于response.redirect!
HTTP响应状态代码301 Moved Permanently用于永久重定向,这意味着使用收到301 Moved Permanently响应的URL的当前链接或记录应更新为响应的Location字段中提供的新URL。