HTTP状态码:301,302,404,500

相信你对于http状态码并不陌生吧。在浏览器中可以通过使用插件来查看这些HTTP状态码。其中之一是LiveHTTPHeaders(http://livehttpheaders.mozdev.org/),可以用在Firefox中。对Internet Explorer,则可以使用ieHTTPHeaders(http://www.blunck.se/iehttpheaders/iehttpheaders. html) 。

常见的http状态码包括200,301,302,404,500等。下面分别介绍一下。

200是最常见的http状态码,它的含义很简单,就是成功了。一个正常网页返回的状态码就是200.

302是临时性重定向到意思,就是一个网页临时被搬到了另一个网页上。实际应用中,应该把它分成两种:内部临时的重定向,即从域A的一个页面到域A的另一个页面;外部临时的重定向,从域A的一个页面到域B的一个页面。浏览器在解释302重定向的时候总是遵循其定义(无论对于内部和外部都如此)。然而,目前大部分搜索引擎(包括Google和Yahoo!)只把它作为内部的302重定向来使用。这样,对一个内部的302重定向,搜索引擎不会缓存重定向的结果,并且将域A继续列于SERP中。这与定义是一致的。外部302重定向则复杂一些。Google的Matt Cuffs宣称,超过99%的时间里,Google将列出目标结果的结果,即域B而不是域A。这是与标准相背离的,而Google这么做是为了减轻“302劫持”的攻击。“302劫持(hijacking)”是指,利用域A上的一个页面引用有高质量更新内容的域B。这样,基于从域B“偷来”的更新内容,这个页面会有较好的排名。

404是错误页面返回的状态码,表示页面不存在或被删除。对静态网站,404错误是自动产生的,只要删除了文件就会产生。然而,许多动态网站根本没有404的概念,因为它的实现需要额外的努力。典型情况是当一个产品从数据库中被删除时,产品页面不再被网站的其他页面所链接。然而,这个产品页面可能由于被外部网站页面链接而获得了链接价值,并仍然被搜索引擎索引。最糟糕的事情就是返回一个带200状态代码的空页面,这经常发生在当某个产品ID在数据库中不再存在时。随着时间推移,结果就是一些空页面被搜索引擎索引,这将导致重复内容问题。其实应该返回404状态代码,再附带一个友好的错误消息。搜索引擎不会索引导致404错误的页面。

500表示服务器正在维护。如果服务器在维护的时候,你没有使用500状态码,那么服务器会产生404状态码,导致原来收录的内容有可能被搜索引擎删除。返回500,即表示告诉搜索引擎,我的服务器正在维护,让它等一段时间再来访问。

301是seo中最重要的http状态码,很多地方都会用到301重定向。这是一种永久性的重定性,采用了301重定向,搜索引擎会删除原页面,收录重定向后的页面,并将原页面的权重转移到新的页面。常见的301重定向有两种方式,即:

  1. .htaccess: RewriteRuie ^foo\.php$ /bar.php [R=30I,L]
  2. php代码: header(‘HTTP/1.1 301 Moved Permanently’); header(‘Location: http://jiadingqiang.com/bar.php’);

301重定向应用非常广泛,下面举几个代码示例说明一下。

//1. redirect requests to index.php and index.html to the root
function fix_index_url()
{
// if the request is for index.php we redirect to ./
if (preg_match(‘#(.*)index\.(html|php)$#’, $_SERVER[‘REQUEST_URI’], $captures))
{
// perform a 301 redirect to the new URL
header(‘HTTP/1.1 301 Moved Permanently’);
header(‘Location: ‘ . $captures[1]);
}
}

//2. redirects to proper URL if not already there
function fix_category_product_url()
{
// obtain the proper URL of the current category/product page
$proper_url = get_proper_category_product_url();

// 301 redirect to the proper URL if necessary
if (SITE_DOMAIN . $_SERVER[‘REQUEST_URI’] != $proper_url)
{
header(‘HTTP/1.1 301 Moved Permanently’);
header(‘Location: ‘ . $proper_url);
exit();
}
}

好了,我的分享就到这里了。如果你对本文有什么建议或意见,欢迎留言交流。

贾定强微信

微信扫一下,或点击链接添加好友