向搜索引擎返回正确的http header头信息状态码, 是SEO最基本的。当页面不存在时,返回404;当将一个url地址永久重定向到另一url地址时,返回301;那当网站下线维护期间,应该向搜索引擎返回哪个header状态码呢?
我读到两篇文章讲得非常清楚,应该返回503 service temporarily unavailable。一篇是http://www.askapache.com/htaccess/503-service-temporarily-unavailable.html。这篇文章讲到:如果搜索引擎刚好在网站维护时造访,错误地返回404或者500,那么已被索引的页面的pagerank极有可能丢失。在返回503状态码给爬虫时,还应该发Retry-After头信息给爬虫,告诉爬虫多久后再来造访。比如Retry-After: 3600,是告诉搜索引擎请在3600秒后再来访问。 另一篇文章地址找不到了,那篇文章还引用了google webmaster center里的一段文字来证明应该返回503。
我的实例
不久前,我做的一个小站下线了一段时间,期间都是返回503给搜索引擎。今天重新上线,我登陆谷歌网站管理员中心,在crawl errors栏目里看到好些robots.txt unreachable的错误信息。查看了google webmaster center关于URL unreachable errors的说明,才知道google抓取页面时,会先检测网站根目录下是否存在robots.txt,如果存在则google不会索引robots.txt里禁止索引的页面。如果不存在(返回了404)则google认为所有页面都是允许索引的。我的实际情况是,维护期间我的网站根目录下实际不存在robots.txt,而且我的设置是所有地址都返回503。这样googel检测是否存在robots.txt时得到的是503状态码,就是google所谓的robots.txt file unreachable(因为既不是404,也不是200)。当robots.txt file unreachable时,google停止索引网站,过段时间当google检测到存在robots.txt或检测到不存在robots.txt时(404),再继续索引网站。
结论
网站维护时,发503给搜索引擎,同时,当google检测是否存在robots.txt时也发503给她。