2013-11-22 60 views
0

偶爾我們的服務器會遇到數據庫連接問題,我們希望在發生這種情況時臨時重定向用戶。將用戶重定向到維護頁面的最佳方式是什麼?在計劃外維護期間重定向

喜歡的東西

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"; 
} 

感謝

+1

只是一個小方面的說明:它是維護而不是維護。 – putvande

回答

1

正確的響應方式是使用相關的HTTP狀態碼 - 這解決了REST,AJAX和搜索引擎爬行程序的問題 - 但MSIE的某些版本會隱藏您發送給用戶的信息if the content is considered too short

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

撇開mising報價,你不能做一個重定向(30x)並同時返回一個錯誤代碼。根據第二種方法按內聯方式進行操作 - 但添加顯式退出!

1

你應該用適當的5xx響應代碼(服務器錯誤)響應,而不是一個重定向(意爲「信息你所要求的可以在其他地方找到「,它不能)。您也無法同時重定向併發出5xx響應代碼,重定向都是3xx。所以方法#2,在正文中輸出帶有錯誤頁面的503是正確的響應。