Problem
This is my code for 503 page:
header.php
if(getOption('maintence_mode')==1)
{
header("location:503.php");
exit;
}
503.php
<?php
$protocol = "HTTP/1.0";
if ( "HTTP/1.1" == $_SERVER["SERVER_PROTOCOL"] )
$protocol = "HTTP/1.1";
header( "$protocol 503 Service Unavailable", true, 503 );
header( "Retry-After: 3600" );
?>
<!DOCTYPE html>
<head>
<meta http-equiv="Content-type" value="text/html; charset=UTF-8" />
<title>Page Not Found </title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta http-equiv="refresh" content="6;url=index.php">
</head>
<body>
<h2>Site is currently in maintenance mode.</h2>
</body>
</html>
I want to know if my code is correct and how Google will handle SEO thing. I don’t have much knowledge about this, so it would be very helpful if someone could validate this code.
Solution
It looks good to me, but I do have one thing to say.
If I want to access http://yourdomain.com/example/page
, and get a 503 error, I want to be able to refresh the page in a little while, to see if the 503 error is lifted.
What you do is redirect the user to the 503 page, which means that the address I’ll get now if I refresh is http://yourdomain.com/503.php
, this is not optimal.
Instead of redirecting, include the 503 error page.
Also some other things:
- The error says 503, but your titles says “Page not Found”
- Code indentation is important. Don’t neglect it!
- Never use an
if
block without curly brackets. Never.
Maintenance Code
In addition to the good points of @Madara Uchiha:
You use header Retry-After
in addition to http-equiv="refresh"
, which seems odd. The http-equiv="refresh"
will redirect the user after 6 seconds to index.php
, making the header Retry-After
useless. The W3C recommends against using meta refresh, and I think in your situation the header Retry-After
is a better solution, as first redirecting the user to 503.php
, and then to index.php
, from where it will probably go to 503.php
again is confusing.
Of course, then you need to include instead of redirect as @Madara Uchiha recommended, otherwise the user will stay on 503.php
forever. But as an include is a lot more user friendly than a redirect (user stays on page and can reload manually), this is not a problem.
SEO & Google
Returning 503
is how google recommends to handle planned downtime, so this is definitely the way to go.
Google is not 100% transparent on how it determents placement in search results, but downtime is one variable that will negatively affect your standing, so try do reduce it as much as possible.
Small nitpick: You’re missing the initial <html>
tag.