
Любой сайт имеет огромное количество редиректов, которые могут вызвать ошибку запроса. Чаще всего такая проблема возникает в результате неверного указания адреса интернет-ресурса. Всего существует 8 основных причин возникновения ошибки, и делать отдельную страницу для каждой ошибки не слишком целесообразно. Поэтому разработчики предпочитают создавать массив с кодами различных ошибок и устанавливать якорь редиректа на необходимый PHP-документ. Таким образом, у разработчиков есть возможность реализовать единую страницу, на которой будут обрабатываться все возникающие ошибки.
Для этого используется локальный конфигурационный файл .htaccess. Разработчики, использующие систему управления сайтом, могут воспользоваться файлом, который предварительно создан этой системой. Если создается самописный ресурс, то разработчику нужно самостоятельно создать файл .htaccess.
Настройка htaccess
Разработчик должен создать редирект всех ошибок на общий файл. Таковым может быть, например, страница error.php. Для создания редиректа нужно внести определенные изменения в правила работы .htaccess. За счет этого действия можно будет сделать редирект любой ошибки на общий файл.
ErrorDocument 400 /errors.php ErrorDocument 403 /errors.php ErrorDocument 404 /errors.php ErrorDocument 405 /errors.php ErrorDocument 408 /errors.php ErrorDocument 500 /errors.php ErrorDocument 502 /errors.php ErrorDocument 504 /errors.php
Настройка PHP
Остается только лишь создать файл error.php. Его нужно расположить в корневой папке на сервере, который используется для работы сайта.
$status = $_SERVER['REDIRECT_STATUS']; $codes = array( 400 => array('400 Неверный запрос', 'Запрос не может быть обработан.'), 403 => array('403 Доступ запрещен', 'Отказ на выволнения.'), 404 => array('404 Страница не найдена', 'Мы не нашли вашу страницу.'), 405 => array('405 Метод не допускается', 'Метод не допускается для заданного ресурса.'), 408 => array('408 Время ожидания сервера истекло', 'Ваш браузер не отправил информацию на сервер.'), 500 => array('500 Внутренняя ошибка сервера', 'Запрос не может быть обработан из-за внутренней ошибки сервера.'), 502 => array('502 Неверный шлюз', 'Сервер получил неправильный ответ.'), 504 => array('504 Истекло время ожидания шлюза', 'Вышестоящий сервер не ответил за установленное время.'), ); $title = $codes[$status][0]; $message = $codes[$status][1]; if ($title == false || strlen($status) != 3) { $message = 'Код ошибки не правильный.'; } echo '<h1>Обратите внимание! Обнаружена ошибка '.$title.'!</h1> <p>'.$message.'</p>';