偶尔我们的服务器会遇到数据库连接问题,当这种情况发生时,我们希望临时重定向用户。将用户重定向到维护页面的最佳方式是什么?
类似的东西
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,是正确的响应。