在asp中,response.redirect和响应状态301重定向有什么区别?

时间:2010-06-11 19:00:02

标签: asp.net

我们的asp应用程序正在转移到新服务器,我想实现一个永久URL重定向。我知道以下两种方法,我需要了解哪一个用户优先于其他方式?

选项1:

<%@ Language=VBScript %><% Response.Redirect "http://www.example.com" %>

选项2:

<%@ Language=VBScript %><% Response.Status="301 Moved Permanently" 
  Response.AddHeader "Location","http://www.example.com/" %>

谢谢,

尼基尔。

4 个答案:

答案 0 :(得分:13)

Response.Redirect发出302,这是一个临时重定向。 301,使用您列出的Response.AddHeader,用于永久重定向。

301和302之间的差异对于搜索引擎优化具有一定的重要性。 301将保留旧位置的所有搜索排名。另一方面,如果您不希望将新页面编入索引,则可以使用Response.Redirect(302),因为引擎会将重定向视为临时。谷歌没有索引302,因为很多垃圾邮件发送者都试图提高他们的排名。

由于您永久性地转移到新服务器,因此301是最佳方式。

答案 1 :(得分:1)

Response.Redirect()(以及301的等效方法RedirectPermanent())在幕后做了很多事情。它null检查请求的URL字符串,对其进行编码,调用Redirecting事件的事件处理程序(如果有),最后调用Response.End(),将响应刷新回浏览器并中止当前线程

最终,您可能不会注意到手动设置标头和调用重定向之间存在很大差异。

顺便说一句,有更多(和更好)的选项来处理这个问题。 IIS有一个URL Rewriting module,可以让您重定向给定的URL,而无需将您的页面作为请求处理程序调用,并集中管理您的URL以便更轻松地管理搜索引擎。

答案 2 :(得分:0)

正常重定向默认使用HTTP status 302。 Searchbots(如Googlebot)不会将status 301的重定向编入索引,如果是,则会从现有索引中删除它们。如果要将旧URL“更新”为较新的URL,则非常有用。搜索机器人无论如何都会将状态为302的重定向编入索引,因此您可能最终会在搜索结果中出现污染。您通常使用状态302作为PRG模式,使用状态301作为永久重定向,就像您现在所做的那样。

答案 3 :(得分:-2)

Response.Redirect向浏览器发送“302 - 暂时移动”状态代码,根据您的操作,可能会也可能不会。如果您要重定向到内容的正确位置,则需要执行301重定向,因为搜索引擎无法针对302进行正确抓取。