在计划外维护期间重定向

时间:2013-11-22 16:45:04

标签: php mysql

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

这样的东西
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";
}

由于

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

正确的响应方式是使用相关的HTTP状态代码 - 这解决了REST,AJAX和搜索引擎爬虫的问题 - 但是MSIE的某些版本会隐藏您发送给用户if the content is considered too short的信息。

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

除了mising引用之外,您不能进行重定向(30x)并同时返回错误代码。按照第二种方法进行内联 - 但是添加一个明显的退出!

相关问题