Joomla все меню ошибка 404

Узнайте, как правильно создать и настроить собственную страницу ошибки 404 для сайта на Joomla 3 и Joomla 4, отображаемую в интерфейсе шаблона.

Важно знать!

Ошибка 404 (Error 404) — это ответ сервера, отправляемый при запросах на несуществующие ресурсы.

Веб-сервер должен отправлять ответ 404 Not Found в случае, если соответствующего запрашиваемому URL-адресу ресурса не существует.

Что такое страница ошибки 404?

Важно знать!

Страница ошибки 404 — это веб-страница, отображаемая при прямом запросе на несуществующий документ.

При этом сервер должен отдавать именно ответ 404 Not Found, а не перенаправлять пользователей на страницу со статусом 200 OK. Это очень важно, т. к. роботы поисковых систем принимают во внимание ответы сервера, и считают существующими все страницы со статусом 200 OK, который не запрещает индексировать такие страницы в поисковой системе, а это может способствовать появлению дублей страниц в поисковой выдаче и затруднит продвижение сайта в целом.

Страница ошибки 404 в шаблонах Joomla

Профессиональные шаблоны Joomla всегда имеют в своём арсенале настроенную рабочую страницу 404-й ошибки, отображаемую при вводе несуществующих адресов.

Как правило, внешний интерфейс данных страниц сильно отличается от общего интерфейса шаблона, что может негативно сказаться на поведенческих факторах: некоторые пользователи могут «испугаться» и покинуть сайт. Во избежание таких потерь посетителей сайта на ровном месте мы рекомендуем создавать настраиваемую страницу для 404-ошибки, отображаемую в интерфейсе шаблона.

Создание страницы 404 в интерфейсе шаблона

Разберем по пунктам, как правильно создать и настроить собственную страницу ошибки 404 в теле стандартного шаблона Protostar для Joomla 3 с отображением контента в области компонента.

Важно знать!

Указанная инструкция актуальна как для Joomla 3, так и для Joomla 4.

  1. Создать и опубликовать материал, который будет отображаться при запросе несуществующей страницы. Примеры опций:
    • Заголовок: «Страница не найдена».
    • Алиас: «error-404».
    • Cодержание: «Указанной страницы не существует. Вероятно, она была удалена или перенесена на другой адрес.»
    • Категория: «Uncategorised».
  2. Создать и опубликовать скрытый пункт меню данного материала с алиасом error-404:
    • Во вкладке Параметры материала необходимо отключить показ всей лишней информации (Автор, Хиты, Дата публикации и т. д.).
    • Во вкладке Параметры ссылки необходимо установить опцию Показать в меню на Нет, чтобы скрыть пункт меню.
    • Во вкладке Параметры страницы можно прописать тег <title>, который будет отображаться вместо названия материала. Например: «Ошибка 404 — страница не найдена».
    • Во вкладке Метаданные выбрать значение метатега Robots noindex, nofollow.
  3. В папке шаблона (/templates/шаблон) создать или заменить существующий файл error.php, который должен содержать только следующий код:
    <?php
    defined( '_JEXEC' ) or die( 'Restricted access' );
    if($this->error->getCode() == '404'){
        header("HTTP/1.1 404 Not Found");
        echo file_get_contents(JURI::root().'error-404');
        exit;
    }
  4. Проверяем функционирование страницы. По запросу несуществующего документа должен отображаться созданный материал.
  5. Проверяем ответ сервера для несуществующей страницы. Для этого можно воспользоваться панелью разработчика в браузере или сторонним веб-сервисом.
  6. Чтобы сделать страницу ошибки 404 более наглядной, рекомендуем добавить в её контент соответствующее изображение, которое без труда можно найти в поисковой выдаче картинок, а также отключить на ней ненужные модули.

Видеоинструкция

0 Пользователей и 1 Гость просматривают эту тему.

  • 8 Ответов
  • 6097 Просмотров

Добрый день!
Сразу извиняюсь, если подобная тема уже была на форуме, но я поиском ее не нашел!
Создал сайт на Joomla 3.1.x. Уогда первый раз запустил его (просто со стандартным шаблоном) то переходы работали нормально.
Теперь создаю пункты меню, прикрепляю туда материалы (ну и другие типы меню тоже пробовал), а при переходе на страницу получаю 404-ю ошибку!
Вчера серфил сеть в поисках полезной информации по такому случаю, но единственное что нашел, что может быть причиной — вирус!
очень хочется надеяться, что это не так и можно как-то пофиксить это путем манипуляций с самим движком…
Вот ссылка на сайт: aiki-kharkov.com
В общем помогите кто чем может, пожалуйста!

а ещё модет быть причиной что вы забыли переименовать файл htaccess.txt в .htaccess

а ещё модет быть причиной что вы забыли переименовать файл htaccess.txt в .htaccess

Дело в том, что  я такое решение находил тоже. у меня в корне лежит файл .htaccess и еще лежит htaccess.txt. Я пробовал второй переименовать, но это не помогло….к сожалению!

Может у вас материал в категории и категория не опубликована ?
А еще у вас похоже включено Перенаправление URL

Записан

Errare humanum est
Ubuntu по-русски
Пишу не сложные модули и компоненты, не дорого но не срочно

Может у вас материал в категории и категория не опубликована ?
А еще у вас похоже включено Перенаправление URL

Материал без категории (да я собственно пытался даже просто ключить пункт меню Поиск, который был с самого начала)

А как перенаправление это проверить?

А как перенаправление это проверить?

Система-общие настройки
Перенаправление URL должно быть «нет»

« Последнее редактирование: 19.09.2013, 15:21:55 от umbabaraumba »

Записан

Errare humanum est
Ubuntu по-русски
Пишу не сложные модули и компоненты, не дорого но не срочно

Система-общие настройки
Перенаправление URL должно быть «нет»

Вот спасибо, добрый человек! Все заработало!
Премного благодарен!

Система — Общие настройки — Вкладка сайт (по умолчанию) Настройки SEO — Перенаправление URL

Записан

Ишак меня нюхал …
Если помог — плюсуйте в карму.

Система-общие настройки
Перенаправление URL должно быть «нет»

а через какое то время человек будет писать тему в стиле как убрать index.php из строки? это ведь не решение )

It has been suggested that this article or section be split into specific version Namespaces. (Discuss). If version split is not obvious, please allow split request to remain for 1 week pending discussions. Proposed since 4 years ago.

Joomla! использует файл templates/system/error.php для обработки нескольких ошибок статуса HTTP, включая ошибки «403 Forbidden», «404 Not Found» и «500 Internal Server». При желании вы можете стилизовать результаты ошибок.

Важно понимать, что error.php — это независимый файл от Joomla! CMS, но зависит от Joomla! Платформа. Плагины не запускаются в этом файле. Вы не можете включать модули или использовать операторы <jdoc: include>.

Переопределение результатов системных ошибок

Чтобы переопределить результаты системных ошибок, скопируйте файл templates/system/error.php в каталогtemplates/<template-name>.

Если он найдет, Joomla! будет использовать файл error.php из текущего шаблона вместо системного файла.

При желании вы можете отформатировать страницу в соответствии с вашим шаблоном.

Переопределение стиля системы

Если вы хотите изменить стиль, скопируйте файл templates/system/css/error.css в каталог templates/<template-name>/css.
Затем обновите файл templates/<template-name>/error.php, чтобы он ссылался на новое местоположение таблицы стилей, соответственно изменив эту строку:

<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/error.css" type="text/css" />

Затем просто измените error.css, как вам нужно, для ваших требований к стилю.

Настройка сообщений об ошибках

Вы можете добавить условную логику, чтобы варьировать возвращаемое сообщение в зависимости от конкретного кода ошибки.

Вот пример того, как перехватить ошибку 404 и предоставить пользовательское сообщение.

<?php  if ($this->error->getCode() == '404') { ?>
	<div id="errorboxheader">Page not found</div>
		<div id="errorboxbody"><p>Sorry! That page cannot be found.</p>
		</div>
	</div>
<?php } ?>

Код статуса HTTP

Когда делается запрос на страницу на вашем сайте, сервер возвращает HTTP-код состояния в ответ на запрос. Joomla! возвращает ‘200 — сервер успешно вернул страницу’ для страниц с ошибками. Это проблематично для тех, кто работает со Службами Google для веб-мастеров и пытается решить проблему с картой сайта.

Если вы хотите чтобы Joomla! вернула код состояния ошибки, вы можете сделать это, добавив логику перед строкой DOCTYPE, следующим образом:

<?php 
if ($this->error->getCode() == '404') {
	header("HTTP/1.0 404 Not Found");
} ?>

Дополнительная информация о коде состояния HTTP

  • Создать пользовательскую страницу ошибки 404
  • HTTP/1.1 Status Code Definitions
  • Список кодов состояния HTTP

Использование заголовка и нижнего колонтитула темы на странице стандартных ошибок

Joomla 1.5
Если вы хотите видеть страницу ошибки в дизайне темы и вам не нравится перенаправление на URL страницы ошибки или дублирование HTML в шаблоне страницы ошибки, вот способ применить шаблон темы к странице ошибки.

Сначала поместите следующий код в templates/<template-name>/error.php:

<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

include dirname(__FILE__) . "/index.php";
?>

Затем внесите следующие изменения в templates/<template-name>/index.php:

1. Найдите следующий код в index.php

<jdoc:include type="head" />

и замените его следующим

<?php if (!$this->error->getCode()) : ?>
<jdoc:include type="head" />
<?php else : ?> 
<title><?php echo $this->error->getCode() ?> - <?php echo $this->title; ?></title>
<?php endif; ?>

2. Найдите следующий код в index.php

<jdoc:include type="component" />

и замените его следующим

<?php if ($this->error->getCode()) : /* check if we are on error page, if yes - display error message */ ?>
  <p><strong><?php echo $this->error->getCode() ?> - <?php echo $this->error->message ?></strong></p>
  <p><strong><?php echo JText::_('JERROR_LAYOUT_NOT_ABLE_TO_VISIT'); ?></strong></p>
  <ol>
    <li><?php echo JText::_('JERROR_LAYOUT_AN_OUT_OF_DATE_BOOKMARK_FAVOURITE'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_SEARCH_ENGINE_OUT_OF_DATE_LISTING'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_MIS_TYPED_ADDRESS'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_YOU_HAVE_NO_ACCESS_TO_THIS_PAGE'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_REQUESTED_RESOURCE_WAS_NOT_FOUND'); ?></li>
    <li><?php echo JText::_('JERROR_LAYOUT_ERROR_HAS_OCCURRED_WHILE_PROCESSING_YOUR_REQUEST'); ?></li>
  </ol>
  <p><strong><?php echo JText::_('JERROR_LAYOUT_PLEASE_TRY_ONE_OF_THE_FOLLOWING_PAGES'); ?></strong></p>

  <ul>
  <li><a href="<?php echo $this->baseurl; ?>/index.php" title="<?php echo JText::_('JERROR_LAYOUT_GO_TO_THE_HOME_PAGE'); ?>"><?php echo JText::_('JERROR_LAYOUT_HOME_PAGE'); ?></a></li>
  </ul>

  <p><?php echo JText::_('JERROR_LAYOUT_PLEASE_CONTACT_THE_SYSTEM_ADMINISTRATOR'); ?>.</p>
<?php else : ?>
  <jdoc:include type="component" />
<?php endif; ?>

Теперь ваш шаблон темы применяется и к страницам ошибок.

Примечание: Модуль, включенный в шаблон, не будет работать на странице ошибок, созданной этим методом (но будет работать на других страницах).

Использование модулей на страницах ошибок

Модули не могут быть включены в страницы ошибок так же, как index.php шаблона, потому что вы не можете использовать операторы <jdoc: include>. Существует альтернативный способ использования JModuleHelper.

Чтобы включить один модуль по заголовку, вы можете использовать:

if (JModuleHelper::getModule('menu')) { 
    echo $doc->getBuffer('module', 'menu');
}

Чтобы включить несколько модулей по позиции, вы можете использовать:

$modules = JModuleHelper::getModules( 'footer_3' );
$attribs['style'] = 'xhtml';
foreach ($modules AS $module ) {
    echo JModuleHelper::renderModule( $module, $attribs );
}

Вступление

Страница ошибок, которую сервера HTTP обозначают, как 404 Not found, означает, что сервер работает исправно, однако по сделанному запросу ничего не найдено. Для сайта Joomla, это значит, что страницы, которую пользователь пытается открыть, не существует. Для CMS Joomla причин появления страниц 404 много. Основные причины редактирование статей, изменение SEO настроек сайта, перенос статей из одной категории в другую, удаление модулей и т.п.

На всех системных шаблонах Joomla, страница 404 уже создана. В принципе вся необходимая информация для пользователя на этой странице есть, но удручает ее внешний вид. Создадим свою уникальную страницу 404 на сайте Joomla.

Примечание: С течением времени, должен сделать добавление. Удручать должен не внешний вид старницы 404 Joomla сайта, а статус страницы ошибок, который возвращает HTTP сервис при её запросе. Правильно, если сервер отдает на ошибочном URL, код статуса HTTP — 404 Not Found, а не 303,302, и т.д. Обязательно! До и после создания страницы 404, проверьте, что отдает сервер на несуществующем URL. Удобно это сделать в Яндекс.Вебмастер на вкладке Инструменты. (дополение 20-03-2017).      

404 Notfound Joomla 08

Алгоритм работ таков:

  • Создать и оформить страницу 404;
  • Создать пункт меню 404, опубликовать его, но скрыть от показа в меню;
  • Поменять и отредактировать файл error.php рабочего шаблона;
  • Проверить статус кода созданной страницы ошибок;
  • Всё. 

Создаем страницу 404 в менеджере материалов

На первом шаге, создадим страницу 404 в менеджере материалов сайта в рубрике «Uncategorized». Название может быть произвольное, но для удобства, назовем страницу «404». Оформление страницы 404 делаем «как душе угодно».

  • Чтобы выделить страницу 404 из других страниц сайта, уберем с нее все информационные «обвесы»: показ категорий, автором, показов, дат публикации и т.д. Делаем это на странице добавления материалов, на вкладке: Отображение.

404 Notfound Joomla 10

  • Убираем со страницы все модули. Это делаем на странице Расширения→Менеджер модулей, на вкладке «Привязка модулей».

404 Notfound Joomla 12

404 страницу незачем индексировать у поисковиков, поэтому на странице добавления материалов, закрываем 404 страницу тегами Noindex, Nofollow. Это делаем на вкладке: Создать материал — Публикация, пункт: Мета-тег Robots.

404 Notfound Joomla 14

Сохраняем и публикуем страницу 404.

Создаем меню для страницы 404

Чтобы вывести страницу ошибок на сайт, нужно создать пункт меню с материалом «404». Для этого в любом меню сайта создаем пункт меню с понятным названием, например «404». Тип пункта меню выбираем, как «Материал», а материал выбираем созданную страницу «404».

Сохраняемся и копируем в поле «Ссылка», ссылку созданного пункта меню. Она нужна для дальнейшей прописки 404 страницы.

404 Notfound Joomla 01

Ищем или создаем файл error.php

Системный файл ошибок Joomla лежит в каталоге: /templates/system. Копируем этот файл ошибок error.php, то копируем его и переносим (заменяем) из /templates/system в /templates/ваша-тема.

404 Notfound Joomla 02

Проверяем «прописку» файла error.php в файле templateDetailis.xml. Если прописки нет, прописываем.

straniza 404 joomla 5

Редактируем файл error.php

В рабочем шаблоне ищем файл error.php или используем перенесенный файл error.php. Открываем это файл в текстовом редакторе и поиском ищем слово «404».

После строки:

defined('_JEXEC') or die;

добавляем, удаляя старое:

if (($this->error->getCode()) == '404')
{
header('Location: index.php?option=com_content&view=article&id=1');
exit;
}

, где после Location, вписываем скопированную ссылку пункта меню: «404».

было:

404 Notfound Joomla 03

стало:

2017 03 20 13 20 35

Сохраняемся и переносим отредактированный файл error.php в каталог рабочего шаблона, по FTPв режиме перезаписи.

Смотрим результат

Идем в панель сайта и в общих настройках «Система» чистим кэш. Теперь можно проверить отражение 404 страницы на сайте. Для этого в браузере после домена сайта, через слэш пишем любые буквы, жмем поиск и видим созданную 404 страницу. Если не видим свою страницу 404, чистим кэш браузера (ctrl+F5).

404 Notfound Joomla 13

SEO Проверка страницы 404 на Joomla

Важно, чтобы на запрос созданной страницы ошибок 404, которая имеет бесконечное количество URL, сервер отдавал ответ 200 OK, а не 404 NotFound.

Проверить ответ сервера можно на своей странице Яндекс.Вебмастер, на вкладке Инструменты>>Проверка ответа сервера. Пишете свой домен, через слэш любой набор букв, жмете «Проверить». Ответ сервера должен быть 200 OK, Содержание страницы должно быть.        

©Joomla3-x.ru

Другие статьи разделов: CMS Joomla и оптимизация

  1. Offline

    aikstroy

    Недавно здесь

    Регистрация:
    27.09.2007
    Сообщения:
    1
    Симпатии:
    0

    Создал разделы, категориии…делаю меню…
    открываю майнменю создаю ссылки как вроде положено
    только меню в том числе и главная ведуд на 404ю (нет страницы)
    обьясните плиз как правильно привязать меню.

    ЗЫ: в ходе эксперементов пункты меню несколько раз удалял и создавал заново…в том числе и главную
    ЗЗЫ: когда размещаю пункты первыми на главной странице их содержимое отоброжается но при шлепе на пункт меню уходет на 404

    Да я нуб и просьба ногами не бить :)

  2. Fanamura

    Offline

    Fanamura

    Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 094
    Симпатии:
    158
    Пол:
    Мужской

    Ответ: Ссылки меню ведут на 404 страницу

    а хтакцесс переименовали?

  3. Offline

    nuki

    Недавно здесь

    Регистрация:
    12.07.2008
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Женский

    Аналогичная проблема возникла. Вывожу Datso или Art*Media в mainmenu — ссылки на главной 404. Такая же ситуация и со стандартной ссылкой на FAQ.
    В чем может быть причина или подскажите где почитать про сиё безобразие ?
    …………..
    проблема решена ).
    Дело было в «//»

    Последнее редактирование: 15.08.2008

  4. Offline

    Ирина Ревин

    Недавно здесь

    Регистрация:
    19.08.2008
    Сообщения:
    74
    Симпатии:
    1
    Пол:
    Мужской

    Re: Ссылки меню ведут на

    всем доброго времени!:[
    У меня абсолютно та же проблема возникла, уже было собралась создать темку тут про сие.. но меня уже опередили

    Делаю меню. Для этого создала Раздел. В разделе создала Категории. В каждой категории по одной новостистатье.
    Далее пошла в майн меню, создала пункт меню — Блогг — содержимое категории,
    по логике вещей, когда нажимаешь в меню на один6 из пунктов. там должна открываться статья содержащиеся в этой конкретной категории… но у меня выдает — 404 данной страницы не существует..

    что я делаю неправильно?((( Помогите пожалуйста, уже неделю бьюсь.. и никак не могу найти причину :'(:'(:'(:'(

    п.с. У меня Жустина

    а можно чуток поконкретнее?)

    Последнее редактирование: 29.08.2008

  5. Offline

    nuki

    Недавно здесь

    Регистрация:
    12.07.2008
    Сообщения:
    11
    Симпатии:
    0
    Пол:
    Женский

    Re: Ссылки меню ведут на

    Посмотри как у тебя выглядят ссылки. Если есть вышеуказанный мной двойной слэш, то тебе нужно поставить компонент ARTIO JoomSEF. он оптимизирует твои ссылки. Для пущей брутальности в этом компоненте в Разделе Configuration ищи большое окошко с набором буковок «Non-ascii char replacements»
    Вставь туда

    1. Г?|A, Г‚|A, Д‚|A, Г„|A, Д†|C, Г‡|C, ДЊ|C, ДЋ|D, Д?|D, Г‰|E, Д?|E, Г‹|E, Дљ|E, ГЌ|I, ГЋ|I, Д№|L, Е?|N, Е‡|N, Г“|O, Г”|O, Е?|O, Г–|O, Е”|R, Е?|R, Е |S, Ељ|O, Е¤|T, Е®|U, Гљ|U, Е°|U, Гњ|U, Гќ|Y, ЕЅ|Z, Е№,Z, ГЎ|a, Гў|a, Д?|a, Г¤|a, Д‡|c, Г§|c, ДЌ|c, ДЏ|d, Д‘|d, Г©|e, Д™|e, Г«|e, Д›|e, Г­i, Г®|i, Дє|l, Е„|n, Е?|n, Гі|o, Гґ|o, Е‘|o, Г¶|o, ЕЎ|s, Е›|s, Е™|r, Е•|r, ЕҐ|t, ЕЇ|u, Гє|u, Е±|u, Гј|u, ГЅ|y, Еѕ|z, Еє|z, Л™|-, Гџ|ss, Д„|A, Вµ|u, Ґ|G, Ё|YO, Є|E, Ї|YI, І|I, і|i, ґ|g, ё|yo, №|#, є|e, ї|yi, А|A, Б|B, В|V, Г|G, Д|D, Е|E, Ж|ZH, З|Z, И|I, Й|Y, К|K, Л|L, М|M, Н|N, О|O, П|P, Р|R, С|S, Т|T, У|U, Ф|F, Х|H, Ц|TS, Ч|CH, Ш|SH, Щ|SCH, Ъ|, Ы|YI, Ь|, Э|E, Ю|YU, Я|YA, а|a, б|b, в|v, г|g, д|d, е|e, ж|zh, з|z, и|i, й|y, к|k, л|l, м|m, н|n, о|o, п|p, р|r, с|s, т|t, у|u, ф|f, х|h, ц|ts, ч|ch, ш|sh, щ|sch, ъ|’, ы|yi, ь|, э|e, ю|yu, я|ya
  6. Offline

    Ирина Ревин

    Недавно здесь

    Регистрация:
    19.08.2008
    Сообщения:
    74
    Симпатии:
    1
    Пол:
    Мужской

    Re: Ссылки меню ведут на

    урааааааааааааа!!!! Спасибо!!!!!!! Помогла установка этого компонента!!!
    Дай вам бог всего того, что вам нужно и хочется!!!))))

    Последнее редактирование: 30.08.2008

  7. Offline

    dima0785

    Недавно здесь

    Регистрация:
    28.12.2008
    Сообщения:
    7
    Симпатии:
    0
    Пол:
    Мужской

    можно вопрос а что именно подразумевается под «//»?

  8. Fanamura

    Offline

    Fanamura

    Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 094
    Симпатии:
    158
    Пол:
    Мужской

    dima0785, двойной слеш в одном из параметров в файле конфигурации

  9. Offline

    Bahus

    Недавно здесь

    Регистрация:
    08.02.2007
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской

    У меня другая ситуация. Поставил артио, включил. Все ссылки идут типа site.ru//9-34.html.
    Название сайта поменялось на просто «Главная»
    Можно ли сделать, чтобы как в datalifeengine ссылки типа siite.ru/progi/mega-proga-2009.html То есть чтоб в конце стояло название материала в латинской транскрипции.

  10. Fanamura

    Offline

    Fanamura

    Доброта

    Регистрация:
    12.03.2007
    Сообщения:
    5 094
    Симпатии:
    158
    Пол:
    Мужской

    Bahus, можно. Для этого при создании материала нужно заполнять графу псевдоним заголовка. Или изменить в настройках артио откуда ему брать текст ссылки (с заголовка поставить)

  11. Offline

    Bahus

    Недавно здесь

    Регистрация:
    08.02.2007
    Сообщения:
    6
    Симпатии:
    0
    Пол:
    Мужской

    Все псевдонимы заполнены. Только странный двойной слэш гробит ссылки. Все ведут на 404 страницу.

  12. Offline

    Maxar

    Недавно здесь

    Регистрация:
    22.10.2010
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской

    подскажите пожалуйста, возникла проблема)использую Joomla 1.5.9 с K2, после того как добавил материалов, при выборе любого пункта меню, ссылающегося на материал из К2, система выдает 404ую…в чем может быть проблема?)

Поделиться этой страницей


Форумы Joomla! CMS

Ошибка 404 отвечает за оповещение пользователя о том, что запрошенной им страницы не существует. Правильная настройка страницы с ошибкой 404 важна не только для пользователя, но и для поисковой системы. В Joomla существует встроенная страница ошибки 404, но вид у нее неприглядный. Поэтому мы ее заменим на свою красивую страницу.

Создаем новый материал для показа 404 ошибки.

Если не усердствовать над оформлением страницы, то можно сделать простенький текстовый контент с кнопкой для возврата на предыдущую страницу.

Код этой страницы такой:

<div style="text-align:center;">
<h1 class="error-title">404</h1>
<h2>Ой... Мы не можем найти эту страницу!</h2>
<p class="lead">Мы сожалеем, но страница на которую Вы пытались перейти не существует.<br />Пожалуйста вернитесь на предыдущую страницу или воспользуйтесь меню сайта.</p>
<a href="javascript: history.go(-1)" ><button>Предыдущая страница</button></a>
</div>

Прикрепляем материал к пункту меню joomla, чтобы ссылка страницы с ошибкой имела человекопонятный url, например 404-error.

Не забываем ссылку меню сделать скрытой

Создаем файл error.php в папке шаблона сайта /templates/ваш_шаблон, который будет возврашать код ошибки и показывать нашу кастомную страницу.

Код содержимого error.php

<?php
defined('_JEXEC') or die;

if (!isset($this->error))
{
	$this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
	$this->debug = false;
}

if($this->error->getCode()=='404') {
	header("HTTP/1.0 404 Not Found");
        $url=JURI::root()."index.php/404-error";
        $data = file_get_contents($url) or die("Cannot open URL");
        echo $data;
        break;
}
?> 

Проверяем открывается ли страница с ошибкой. Вводим несуществующий url, примерно так http://soft-setup.ru/iuensg

Если открылась наша кастомная страница по адресу /404-error, то все сделано правильно.

Проверяем возращает ли наш сайт 404 ошибку роботу.

Проверить ответ сервера можно в webmaster.yandex.ru. переходим в Инструменты/Проверка ответа сервера. Вводим несуществующий url и жмем проверить.

Получили код статуса HTTP: 404 Not Found. Что и требовалось получить.

Время на прочтение
2 мин

Количество просмотров 14K

image

Известно, что для того, чтобы удержать посетителя на сайте, нужно правильно обрабатывать HTTP/1.0 404 и другие подобные коды. На просторах интернета можно найти массу занимательных примеров страниц 404, а также руководств – что и как сделать, чтобы ошибка 404 правильно обрабатывалась сайтом как для посетителя, так и для поисковых систем.

Хочу с вами обсудить проблему 404 для сайтов Joomla.

Общие рекомендации по настройке Joomla для обработки HTTP/1.0 404

Не буду повторять здесь все причины тех или иных шагов и настроек, буду перечислять кратко то, что можно найти в Интернете.

  1. Создаем в нашей Joomla «красивую страничку 404». Можно несколько — при реализации вашей особенной логики и способа их выбора для
    посетителя;
  2. В свой шаблон, который используется на сайте в качестве основного шаблона frontend, из системного шаблона system переписываем файл error.php;
  3. Далее редактируем этот файл для того, чтобы следовать следующей логике – если мы отловили ошибку 404 – то сначала выдать заголовок HTTP/1.0 404, а затем выдать страницу, которую мы ранее подготовили. Предположим, номер (ID) нашей «красивой страницы 404» равен 1001. Файл error.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");
	header('Location: index.php?option=com_content&view=article&id=1001');
}

Теперь проверяем. Вводим адрес сайта. Далее – абракадабра после символа /. Работает? Работает, чего и следовало ожидать.

В чем подвох?

Открываем отладку страниц в вашем любимом браузере (мой любимый браузер – Fitefox с Firebug-ом), вкладка «Сеть», и смотрим заголовки, которыми общается браузер с сайтом.

Вводим адрес сайта – заголовок HTTP/1.0 200 OK

Теперь абракадабра… Ожидаем HTTP/1.0 400 Not Found — смотрим заголовки:

  1. Сначала HTTP/1.0 302 Found
  2. Затем наша красивая страница отдается браузеру с кодом HTTP/1.0 200 OK

image

Чем это плохо?

— Но, ведь, работает? — Скажете вы. Да, работает. А как на это смотрит поисковая система?

Был у меня переезд страниц сайта с одного раздела (папки) сайта на другой. Но переехать должны были не все страницы. Страницы старого раздела сайта были в индексе. Те, что переехали – выдавались с кодом HTTP/1.0 301 Moved Permanently (классика жанра) и поисковики их правильно «переехали» на новое место. А те, что должны были «кануть в лету» – так и мелькали в индексе, хотя физически отсутствовали на сайте, а при обращении к ним выдавалась «красивая страничка 404», но не код HTTP/1.0 404 (смотрим выше).

Выход из этой ситуации

Для страниц с ошибкой 404 я решил выдавать заголовок HTTP/1.0 404 Not Found и делать не редирект через заголовок Location, а читать поток «красивой страницы 404» и перенаправлять его браузеру. Вот реализация:

if($this->error->getCode()=='404') {
	header("HTTP/1.0 404 Not Found");
	$url=JURI::root()."index.php?option=com_content&view=article&id=1001";
	$data = file_get_contents($url) or die("Cannot open URL");
    echo $data; 
}

Теперь, и нужная страница посетителю отдается при ошибке 404, и поисковая машина видет действительно код 404 и считает введенный адрес таковым — Not Found.

Introduction

What is A 404 Error Page?

As you know, the HTTP 404 status code shows that visitors’ browsers can communicate with the server, but they can’t find the requested content. So, when your visitors try to open a page that doesn’t exist on your site, a 404 error page will be showcased. Some popular reasons that cause a 404 error message include:

  • The URL/ its content is removed.
  • The visitors typed the URL incorrectly.
  • The URL/ its content is moved without customizing the internal links.
  • The domain no longer exists.
  • The website hosting server faces trouble.

Hence, if you want to build a 404 error, what content you should add? A good and useful 404 page should have clear navigation. That means you should display:

  • Your homepage.
  • Some hottest blog pages.
  • Some popular or trending product or service pages.
  • An HTML sitemap.

Why do you need to create A Custom 404 Error Page in Joomla 4?

If you are using Joomla 4, there are many compelling reasons you should consider creating a custom 404 error page for your site:

  • Navigating visitors to the homepage or any page you want them to access.
  • Helping your site become more professional.
  • Decreasing the bounce rate.
  • Giving the visitors a great experience when they surf your site.

After taking a look at some fundamental information about the 404 error page, it’s time for you to explore how to generate it.

Let’s create A Custom 404 Error Page in Joomla 4

In the blog, we would like to provide you with two ways to build a custom 404 page. So, you can read and select the most suitable one for your site.

Generating a custom 404 error page manually

First of all, you need to create a new menu item for your 404 page. In order to do that, you just need to go to Menus -> Main Menu Blog -> New.

Create A Custom 404 Error Page In Joomla 4-1

Now, simply fill out the title, then click on the Select button in the Menu Item Type option.

Create A Custom 404 Error Page In Joomla 4-2

A Menu Item Type popup will appear for you to select. Thus, let’s choose Articles -> Single Article, then close the popup.

Create A Custom 404 Error Page In Joomla 4-3

In the Select Article option, press the Create button to generate a new article.

Create A Custom 404 Error Page In Joomla 4-4

Next, let’s enter the title of the article. After that, in the Article Text, you need to fill out the content you want to display on the 404 error page. You can add text, images, links, and much more.

After finishing, simply click on the Save & Close button.

Create A Custom 404 Error Page In Joomla 4-5

Now, you need to move on to the Link Type tab and disable the Display in Menu option.

Create A Custom 404 Error Page In Joomla 4-6

Once turning off the Display in Menu option, let’s save the menu. Moreover, you need to remember the ID number of the article in the Link box.

Create A Custom 404 Error Page In Joomla 4-7

Close the menu, you will see a menu ID. So, all you need to do is remember the ID number of the 404 error page menu.

Create A Custom 404 Error Page In Joomla 4-8

In the next step, let’s open System -> Site Templates, then click to edit the template you are using in Joomla 4. In our example, we are using Cassiopeia, so we will open and customize it.

Create A Custom 404 Error Page In Joomla 4-9

Now, let’s find and edit the error.php file in the /templates/cassiopeia folder.

After the code
defined('_JEXEC') or die;
in line 10, you just need to add the following code:

if (($this->error->getCode()) == '404') {
header('Location: ' . Jroute::_("index.php?option=com_content&view=article&id=XXItemid=YY", false));
exit;
}

Don’t forget to replace XX with the ID of the article, and YY with the ID of the menu item you created before.

Eventually, simply save it.

Create A Custom 404 Error Page In Joomla 4-10

Now, you can freely check the result on your site. After the URL, simply add anything you want to view the 404 error page.

Create A Custom 404 Error Page In Joomla 4-11

Using SP Page Builder to build a custom 404 error page

If you feel the first method is quite complicated and time-consuming, you can try the second one.

We will start the second way by downloading SP Page Builder and installing the extension on your Joomla site.

Once successful installation, you just need to go ahead Components -> SP Page Builder -> Pages -> New. After that, simply add the title for a new page and save it. It will allow you to customize from the front-end editor.

Create A Custom 404 Error Page In Joomla 4-12

SP Page Builder will support you to edit the page with the drag-drop feature. Therefore, it’s easy and simple for you to edit the page in your own way.

You need to add the row, then choose the add-on you want to use. In the next step, simply enter the title as well as add the image you want to showcase on the 404 error page. Besides, you can edit the text and image with some useful options. If you desire to add a button link to navigate the visitors to go back to your homepage, you need to use the premium version with many outstanding add-ons.

Don’t forget to save the page after completely designing it.

Create A Custom 404 Error Page In Joomla 4-13

Now, let’s go back to your admin dashboard and create a new menu item. Simply open Menus -> Main Menu Blog -> New.

Enter the title first, then click on the Select button in the Menu Item Type.

Create A Custom 404 Error Page In Joomla 4-14

You need to select SP Page Builder -> Page.

Create A Custom 404 Error Page In Joomla 4-15

In the Select Page section, let’s choose the 404 page you created in the previous steps. After that, simply save the menu item and remember the page ID in the Link box.

Create A Custom 404 Error Page In Joomla 4-16

Next, go to the Link Type tab and turn off the Display in Menu option. Save it again.

Create A Custom 404 Error Page In Joomla 4-17

Finally, all you need to do is open System -> Site Templates (in the Templates tab), then click to edit the template you are utilizing.

Let’s find the error.php and customize it. After that, simply add the code below:
// custom 404 redirect
$config = JFactory::getConfig();
$sef = $config->get('sef');
$sef_rewrite = $config->get('sef_rewrite');
$sef_suffix = $config->get('sef_suffix');
$redirect_url = JURI::base();
if(!$sef_rewrite) {
$redirect_url .= 'index.php/';
}
$redirect_url .= '404'; // menu alias
if($sef_suffix) {
$redirect_url .= '.html';
}
// if sef is turned off
if(!$sef) {
$redirect_url = 'index.php?option=com_sppagebuilder&view=page&id=XX';
}
if (($this->error->getCode()) == '404') {
header('Location: ' . $redirect_url, true, 301);
exit;
}

Change the XX into the ID number of the page you have already generated before and save it.

Create A Custom 404 Error Page In Joomla 4-18

Everything is done. So, why don’t you take a look at the result on your site now?

Create A Custom 404 Error Page In Joomla 4-19

Closing thoughts

In conclusion, we are happy to show you the way how to Create A Custom 404 Error Page in Joomla 4. Therefore, we hope that the blog will be helpful for you. If you have any relevant questions, then let’s leave your comment below. Furthermore, in case you have an intention to use another template for your site, don’t hesitate to visit our Joomla 4 Templates. Since the collection includes many templates on many different topics, you can freely select the one you love.

  • Author
  • Recent Posts

Lt Digital Team (Content &Amp; Marketing)

Welcome to LT Digital Team, we’re small team with 5 digital content marketers. We make daily blogs for Joomla! and WordPress CMS, support customers and everyone who has issues with these CMSs and solve any issues with blog instruction posts, trusted by over 1.5 million readers worldwide.

Lt Digital Team (Content &Amp; Marketing)

SEO идеальная обработка 404 ошибки в Джумле

ПРОБЛЕМА

По умолчанию Joomla не умеет отдавать станицу 404 Not Found так, как рекомендуют поисковики. В интернетах есть несколько способов решения разной степени свежестии понятности, но нигде нет полного рецепта. Дело в том, что все рассказывают как вписать страницу 404 в шаблон, но никто не знает как организовать при этом правильный ответ сервера. По умолчанию Джумла отдает статус 302 — временно перемещено, или даже 200 — получено. А нам нужен 404 — не найдено. Решение ниже.

Создаем новую статью с заголовком ‘404 error’, публикуем её.

В текст вставляем что-то типа этого:

<h1>404 Не найдено</h1>
<p>Извините, такой страницы не найдено. Попробуйте поискать по содержанию</p>
<p><a href="/index.php?option=com_search&view=search">Поиск</a> | <a href="/">На главную страницу</a> | <a href="index.php?option=com_contact&amp;view=contact&amp;id=1&amp;Itemid=67">Контакты</a></p>

Это ваша красивая страница, где вы объясняете пользователю что у него была битая ссылка, и предлагаете поискать информацию поиском, перейти на главную страницу или связаться с вами. Измените адрес страницы с контактами на свой.

ДЕЛАЕМ ПУНКТ МЕНЮ

Джумла работает странно, и для того, чтобы назначить адресу алиас, нужно сделать невидимый пункт меню. Создаем новое меню, в нем делаем пункт ‘404’ с алиасом ‘404-error’, указывающий на нашу статью ‘404 error’. В настройках индексации выбираем NO INDEX, NO FOLLOW. Всё публикуем, сохряняем. Этого меню не будет нигде видно, но у нас теперь есть короткий адрес для нашей страницы 404, выглядит он так: site.ru/404-error или site.ru/404-error.html если вы включили суффиксы.

РЕДАКТИРУЕМ ШАБЛОН

В корне используемого вами шаблона должен лежать файл error.php. Если его нет, смело создаем.

Минимальное содержимое этого файла должно быть таким:

<?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();
$this->language = $doc->language;
$this->direction = $doc->direction;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" dir="<?php echo $this->direction; ?>">
<?php
if (($this->error->getCode()) == '404') {
header("HTTP/1.1  404 Not Found");   
echo file_get_contents(JURI::root().'/404-error');
exit;
}
?>

Если в файле уже есть какой-то код, попробуйте сохранить его под другим именем и заменить моей версией. Потом по аналогии добавите обработку 403 ошибки если будет нужно.

Проверяем как всё работает, набирая различную абракадабру в адресной строке и коверкая адреса страниц. Все попытки перейти по несуществующему адресу должны приводить нас на страницу сайта с нашим шаблоном и текстом из статьи ‘404 error’. Если это не так, и все пункты проделаны верно, проблема в отключенной переадресации, не работающих seo-урлах (алиасах) или файле .htaccess.

ЗАКРЫВАЕМ СТРАНИЦУ 404 ОТ ИНДЕКСАЦИИ

В файл robots.txt добавляем секцию

Disallow: /404-error

А теперь главное: проверяем ответ сервера! Идем на http://mainspy.ru/otvet_servera и проверяем ответ на не существующую страницу. Он должен быть HTTP/1.1 404 Not Found. Именно этого мы и добивались — поисковик или бот должен однозначно понимать, что перешел по битой ссылке и нечего здесь индексировать.

Всё работает для версии Джумлы 3.4 c установленным компонентом К2. В других версиях и без K2 возможно будет не так, но принцип понятен.

Понравилась статья? Поделить с друзьями:
  • Jmicron pci express gigabit ethernet adapter код ошибки 10
  • Jmeter java heap space ошибка как исправить
  • Jit отладчик visual studio ошибка
  • Json file not found ошибка
  • Jira коммерческая система отслеживания ошибок