Ошибка 404 видна посетителю в случае если он перешел на не существующую страницу или на удаленную.
На примере моего сайта, главная страница - https://alexfine.ru/
Если добавить в адресную строку набор символов - https://alexfine.ru/simvol123
Система перенаправит на страницу ошибки 404. Не настроенная (по умолчанию) страница ошибки 404, выглядит так:
Согласитесь, такая страница имеет не презентабельный вид и может отпугнуть пользователя. Страница оформлена в виде отдельной страницы сайта. Такая реализация плоха тем, что она открывается вне содержимого сайта. Как показывает практика, посетитель уйдет с такого сайта, не задумываясь закроет вкладку. Другое дело, если страница ошибки 404 откроется как страница (статья/материал) самого сайта, в одном стиле с сайтом и навигацией.
Теперь перейдем непосредственно к созданию страницы ошибки 404.
Стандартными методами, создается новый материал. Примерно так, как на картинке ниже:
В материале выбираем категорию - "Uncategorised" или "Без категории". Создается статичный материал, который не принадлежит ни одной из категорий сайта. Как все поля заполнены, сохраняем данный материал и запоминаем его идентификатор (id). Его можно найти на странице со всем материалами - "id материала".
Теперь когда мы создали материал и запомнили его идентификатор, можем перейти к самому сложному :).
Необходимо скопировать файл error.php, который находиться по адресу:
alexfine.ru (на этом месте ваш сайт)/templates/system, в папку вашего шаблона (темы).
Открываем только что скопированный файл и вставляем туда следующий код:
<?php
defined('_JEXEC') or die;
if (!isset($this->error))
{
$this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
$this->debug = false;
}
// Get language and direction
$doc = JFactory::getDocument();
$app = JFactory::getApplication();
$this->language = $doc->language;
$this->direction = $doc->direction;
if($this->error->getCode()=='404') {
header("HTTP/1.0 404 Not Found");
$url=JURI::root()."index.php?option=com_content&view=article&id=ХХ";
$data = file_get_contents($url) or die("Cannot open URL");
echo $data;
}
?>
Далее в строчке: $url=JURI::root()."index.php?option=com_content&view=article&id=ХХ", заместо XX пишем id материала который мы создавали.
Сохраняем файл и проверяем его работу. Если сделали все правильно, откроется наш материал.
Для более красивого и короткого адреса страницы ошибки 404, нужно создать скрытое меню для этого материала. Создаем меню, но на сайте никуда его не выводим. В меню, создаем пункт меню, который ведет на созданный материал.
Всем удачи!