这是我的503页面代码:

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>


我想知道我的代码是否正确以及Google将如何处理SEO。我对此没有太多了解,因此如果有人可以验证此代码将非常有帮助。

评论


if(basename($ _ SERVER ['PHP_SELF'])=='503.php')是否总是正确?

我注意到您使用的是相对URI 503.php。我建议将其设置为绝对URI。为了引用php.net的位置文档:HTTP / 1.1需要绝对URI作为Location的参数:包括方案,主机名和绝对路径,但是某些客户端接受相对URI。通常,您通常可以使用$ _SERVER ['HTTP_HOST'],$ _ SERVER ['PHP_SELF']和dirname()从您自己的亲戚那里创建绝对URI。这里的示例代码,向下滚动到倒数第二个“ Note”部分。

Google博客的旧文章,但实际文章:如何处理计划的网站停机时间

#1 楼

对我来说看起来不错,但是我有话要说。

如果我想访问http://yourdomain.com/example/page并遇到503错误,我希望能够在一段时间内刷新页面,看看503错误是否解除。

您要做的是将用户重定向到503页面,这意味着如果刷新后要获取的地址是http://yourdomain.com/503.php,这不是最佳选择。

而不是重定向,包括503错误页面。 503,但标题显示“找不到页面”
代码缩进很重要。不要忽略它!
切勿使用没有花括号的if块。从不。


评论


\ $ \ begingroup \ $
“而不是重定向,而是包含503错误页面。” -是的,如前所述...同样,如果您重定向的第一个响应,则客户端获得的是302,而不是预期的503。
\ $ \ endgroup \ $
–怀特先生
2014年8月19日在16:39



\ $ \ begingroup \ $
“切勿使用不带大括号的if块。切勿。” +1你是个好人。
\ $ \ endgroup \ $
– FreeAsInBeer
2014年8月20日在13:24

#2 楼

维护代码

除了@Madara Uchiha的优点:

除了header Retry-After之外,还使用http-equiv="refresh",这似乎很奇怪。 http-equiv="refresh"将在6秒后将用户重定向到index.php,从而使header Retry-After无效。 W3C建议不要使用元刷新,我认为在您的情况下,header Retry-After是更好的解决方案,因为首先将用户重定向到503.php,然后再重定向到index.php,从那里可能会再次转到503.php令人困惑。

当然,那么您需要包括@Madara Uchiha建议的而不是重定向,否则用户将永远停留在503.php上。但是,与包含相比,包含内容比重定向更具用户友好性(用户停留在页面上并可以手动重新加载),这不是问题。 503是Google建议处理计划内停机的方式,因此这绝对是可行的方法。
Google对其在搜索结果中的位置影响如何并不是100%透明的,但是停机时间是一个会对您的信誉产生负面影响的变量,因此请尽量减少它。

#3 楼

小nitpick:您缺少初始的<html>标签。

评论


\ $ \ begingroup \ $
您需要添加更多的信息。
\ $ \ endgroup \ $
–bhathiya-perera
2014年11月18日,下午3:21

\ $ \ begingroup \ $
@JaDogg答案虽然简短,但确实提出了具体的改进。我认为做一个答案就足够了。
\ $ \ endgroup \ $
– 200_success
2014年11月18日,下午3:35

\ $ \ begingroup \ $
@ 200_success是的,您是正确的,这是一个很大的改进,我也对此进行了投票。但是,添加更多信息将吸引更多赞成票。
\ $ \ endgroup \ $
–bhathiya-perera
2014年11月18日4:33