Блуждая по обширным угодьям сети интернет я время от времени натыкаюсь на проблему, в которой начинающие сайтостроители сталкиваются с не работающей 404 страницей на своих сайтах.
Встречаются случаи когда вместо 404 страницы появляется 500 ошибка или вообще пустая страница с кучей ошибок, причем не спасает даже запись ErrorDocument в файле .htaccess.
Также встречаются различные варианты решения данной проблемы, но не все из них являются работающими.
Часто предлагается создать новый материал с контентом для 404 страницы, далее вывести его через "скрытое меню", а затем отредактировав файл error.php, находящийся в корне файлов шаблона, выставив путь к данному материалу. Все верно, однако не во всех случаях данный метод работает. Причиной тому служит неправильно отредактированный файл error.php.
Код файла error.php для переадресации на свою 404 страницу
Первым делом нужно убедиться, что он вообще присутствует в корне файлов шаблона, в добавок в файле templateDetails.xml должна присутствовать запись <filename>error.php</filename>. После этого необходимо открыть файл error.php и удалить весь заключенный в него код. После этого, вставим в него видоизмененный код:
<?php
defined('_JEXEC') or die('Restricted access');
if (($this->error->getCode()) == '404') {
header($_SERVER['SERVER_PROTOCOL'] .' 404 Not Found');
?>
<meta http-equiv="refresh" content=" 0; url=http://site.ru/404.html">
<?php
exit();
}
Альтернативный код файла error.php
Используется относительный путь с указанием идентификатора материала 404 страницы.
<?php defined('JPATH_BASE') or die();
echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=777');
?>


Комментарии