HTTP Status Codes – Get it right or lose revenue

Rob Kerry
Reading time: 4 minutes
10th January 2011

In IT We Trust – sometimes too much. Whilst the general awareness of SEO best practice techniques has come on leaps and bounds over the past decade, website operators (especially at large corporations) still rely too much on the knowledge of their IT department or CMS supplier.

Here are 3 big mistakes that can cost your business serious revenue if they’re not fixed promptly:

Website Under Maintenance

You may have heard this time and time again, but one of the most common HTTP Status Code mistakes I tend to come across is when websites go under maintenance. Don’t assume that the people managing your site are complying with W3C standards. If your website is unavailable, use a 503 Service Unavailable HTTP Status and not a standard 200 OK response.

Carphone Warehouse - Under Maintenance

Search Engines index pages returning a 200 Status Code, making your “Under Maintenance” page the new homepage (or even every page) of your site. With Google’s new method of indexing and freshness prioritisation, it could take just seconds for Google to notice the page change and adjust your SERP creative accordingly.

The first thing you’ll see is your lovingly crafted page title and description change across your big money terms, transforming into a GO AWAY sign stating “Our website is currently offline, please come back later”. Even a #1 ranking for [mobile phones] won’t get many click-throughs on a message like that.

It gets even worse if your site is under maintenance for hours at a time, as the next “kiss of death” will come from search engines re-calculating the relevance of your new on-page factors. No matter how much authority your site has, the absence of your big ticket keywords on the maintenance page will result in significant ranking drops or even complete removal under the Googlebomb filter.

Google may be indexing some sites faster these days, but accidentally indexed pages can linger in search listings for days. A very costly mistake which can be easily fixed by altering the CMS or server to present a 503 header.

Example code:

define("MAINTENANCE_TIME", 3600); // Time site will be down for (in seconds)
    header("HTTP/1.1 503 Service Unavailable");
    header("Status: 503 Service Unavailable");
    header("Retry-After: ".MAINTENANCE_TIME);

Rogue Tracking Software

Again, 302 redirects are well known in SEO circles for being the antichrist – but this doesn’t mean that your average sysadmin or web programmer knows. Google and Bing have always had issues with handling and interpreting 302 “Temporary” redirects, especially Google (despite what they say).
Even if you’ve gone through your website with a fine tooth-comb and changed all 302 redirects to 301 “Permanent” redirects, there’s always one which comes back and bites you on the arse – as discovered with this newsletter tracking link:

MoneySupermarket - 302 Redirect

A very lucrative #3 ranking for the search term [broadband] on was hijacked by MoneySupermarket’s own email tracking software. In this case, Google found a number of aged internal and external links pointing to this tracking URL which 302s to the (previously ranking) Broadband page. Rather than treating this redirect like a 301 and only indexing / passing juice to the destination page, Google bizarrely decided that the tracking URL must be the one to display.

As a result of this 302 redirect, MoneySupermarket’s broadband listing became considerably less attractive to users compared to competitor listings above and below them. The email campaign from which this URL existed would also have unusable analytics data, with organic search traffic massively skewing click-through, conversion and demographic data.

Finally, MoneySupermarket may not own and operate which Google is now sending their Broadband traffic through. Although unlikely in this scenario, the operator of the aforementioned tracking URL could easily cloak traffic, continuing to serve Googlebot a 302 redirect whilst sending search traffic through an affiliate link or to a competitor.

This hints at a theory that I have yet to prove – that a search listing on Google could be hijacked by anyone with a 302 redirect, if the redirecting URL is heavily linked to from the destination site. This would put all websites which allowed links to be posted in User Generated Content at risk of SERP hijacking – if it were proved to be true.

The moral of this story is – don’t just check your own website for rogue 302 redirects, ensure that your software and tracking providers also stop using this type of redirect when linking to your site.

Page Not Found (but indexed)

I see this mostly on sites operating on Windows Server platforms, where non-existant pages either 302 redirect to a separate “Page Not Found” URL or return a 200 OK response instead of a 404.

Page Not Found (but indexed)

A “Page Not Found” should be exactly that – not found by Search Engines. If you serve a 404 HTTP Status Code, the bots will go on their merry way and consider the page non-existant. Serving a 200 OK on the other hand results in an infinite site, allowing your competitors to create any URL they wished on your domain simply by linking to it, or for typo URLs to grow out of control.
Even worse is when (for some inexplicable reason) sites 302 redirect non-existant URLs to a 404 or 200 response page. This gives a double-whammy effect, opening the site up to some of the 302 issues previously discussed as well as infinite pages when a 200 OK response is returned.
Ultimately these indexed non-existant pages will multiply and gradually reduce your site’s perceived value with mass amounts of unnecessary duplicated pages. This can directly affect rankings and ultimately sales.
Make sure that no matter what, non-existant pages either 404 or 301 redirect to a relevant page if they previously existed.


Even if your chosen CMS platform says that it’s SEO friendly or your IT team seems to be clued up, always ask questions and never assume that they know what’s best for your site.

Written By Rob Kerry
Asset 1 Asset 1 Asset 3