Tuesday, January 25, 2011
Once in a while we get asked whether a site's visibility in Google's search results can be impacted in a negative way if it's unavailable when Googlebot tries to crawl it. Sometimes downtime is unavoidable: a site owner might decide to take a site down due to ongoing site maintenance, or legal or cultural requirements. Outages that are not clearly marked as such can negatively affect a site's reputation. While we cannot guarantee any crawling, indexing or ranking, there are methods to deal with planned website downtime in a way that will generally not negatively affect your site's visibility in the search results.
For example, instead of returning an HTTP result code
404 (Not Found)
or showing an error page with the status code 200 (OK)
when a page is requested,
it's better to return a 503
HTTP result code (Service Unavailable) which tells search
engine crawlers that the downtime is temporary. Moreover, it allows site owners to provide
visitors and bots with an estimated time when the site will be up and running again. If known, the
length of the downtime in seconds or the estimated date and time when the downtime will be
complete can be specified in an optional
Retry-After
header,
which Googlebot may use to determine when to recrawl the URL.
Returning a 503
HTTP result code can be a great solution for a number of other
situations. We encounter a lot of problems with sites that return 200 (OK)
result
codes for server errors, downtime, bandwidth-overruns or for temporary placeholder pages
("Under Construction"). The 503
HTTP result code is the site owner's solution of
choice for all these situations. As for planned server downtime like hardware maintenance, it's a
good idea to have a separate server available to actually return the 503
HTTP result
code. It is important, however, to not treat 503
as a permanent solution: lasting
503
HTTP result codes can eventually be seen as a sign that the server is now
permanently unavailable and can result in us removing URLs from Google's index.
If you set up a 503 (Service Unavailable)
response, the header information might look
like this when using PHP:
header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Retry-After: Sat, 8 Oct 2011 18:27:00 GMT');
Similar to how you can
make 404
pages more useful to users,
it's also a good idea to provide a customized 503
message explaining the situation to
users and letting them know when the site will be available again. For further information
regarding HTTP result codes, please see
RFC 2616.