2013-11-22 2 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) и возвращает код ошибки, в то же время. Сделайте это в соответствии со вторым методом - НО ДОБАВЛЯЙТЕ EXPLICIT EXIT!

1

Вы должны реагировать с соответствующим кодом ответа 5xx (ошибка сервера), а не с переадресацией (что означает «информацию вы запросили можно найти в другом месте », что не может). Вы также не можете перенаправлять и выдавать код ответа 5xx одновременно, перенаправление - все 3xx. Таким образом, метод №2, выводящий 503 с страницей ошибок в теле, является правильным ответом.

Смежные вопросы