在计划外维护期间重定向


Redirect during unscheduled maintainence

偶尔我们的服务器会遇到数据库连接问题,当这种情况发生时,我们希望临时重定向用户。将用户重定向到维护页面的最佳方式是什么?

类似的东西

if (!$db) {
    header("Location: /maintainence/index.php, TRUE, 503");
    exit();
}

if (!$db) {
  header('HTTP/1.1 503 Service Temporarily Unavailable');
  header('Status: 503 Service Temporarily Unavailable');
  header('Retry-After: 3600'); // in seconds
  include_once "maintainence/index.php";
}

感谢

正确的响应方式是使用相关的HTTP状态代码-这解决了REST、AJAX和搜索引擎框架的问题-但如果内容被认为太短,MSIE的某些版本会隐藏您发送给用户的信息。

header("Location: /maintainence/index.php, TRUE, 503);

抛开错误的引用不谈,你不能在重定向(30x)的同时返回错误代码。按照第二种方法内联执行,但添加一个EXPLICIT EXIT!

您应该使用适当的5xx响应代码(服务器错误)进行响应,而不是重定向(这意味着"您请求的信息可以在其他地方找到",但它不能)。你也不能重定向并同时发出5xx响应代码,重定向都是3xx。因此,方法#2,在主体中输出带有错误页面的503,是正确的响应。