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 3 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
Использование заголовка и нижнего колонтитула темы на странице стандартных ошибок
Если вы хотите видеть страницу ошибки в дизайне темы и вам не нравится перенаправление на 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 ); }
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 6 years ago.
Joomla! uses the templates/system/error.php file to handle several HTTP Status errors, including «403 Forbidden», «404 Not Found», and «500 Internal Server» errors. You can style the error results, if desired.
It is important to understand that error.php is an independent file from the Joomla! CMS but dependent on the Joomla! Platform. Plugins do not run on the file. You cannot include modules or use <jdoc:include> statements.
Overriding the System Error Results[edit]
To override the system error results, copy the templates/system/error.php file into your templates/<template-name> directory.
If it finds one, Joomla! will use the error.php file from the current template, in place of the system file.
You can format the page, as desired, to match your template.
Overriding the System Styling[edit]
If you want to change the styling, copy the templates/system/css/error.css file into your templates/<template-name>/css directory.
Next, update your templates/<template-name>/error.php file to reference the new location of the stylesheet by changing this line, accordingly:
<link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/error.css" type="text/css" />
Then, simply change the error.css, as desired, for your styling requirements.
Customizing Error Messages[edit]
You can add conditional logic to vary the message returned, dependent upon the specific error code.
Here is an example of how to trap a 404 error and provide a custom message.
<?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 Status Code[edit]
When a request is made for a page on your site, the server returns an HTTP status code in response to the request. Joomla! returns a ‘200 — the server successfully returned the page’ for error pages. This is problematic for those working with Google Webmaster Services and trying to get a sitemap resolved.
If you want Joomla! to return a status code for the error, you can do so by adding logic before the DOCTYPE line, as follows:
<?php if ($this->error->getCode() == '404') { header("HTTP/1.0 404 Not Found"); } ?>
More HTTP Status Code Information[edit]
- Create a Custom 404 Error Page
- HTTP/1.1 Status Code Definitions
- List of HTTP status codes
Using Theme Header and Footer on Standard Error Page[edit]
If you want to see the error page in theme design and don’t like redirecting to error page URL or duplicating HTML in the error page template, here is a way to apply your theme template to the error page.
First, put the following code in templates/<template-name>/error.php:
<?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); include dirname(__FILE__) . "/index.php"; ?>
Then make the following edits to templates/<template-name>/index.php:
1. Find the following code in index.php
<jdoc:include type="head" />
and replace it with the following
<?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. Find the following code in index.php
<jdoc:include type="component" />
and replace it with the following
<?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; ?>
Now your theme template is applied to error pages too.
Note: Module includes in template will not work on error page created by this method (but will work on other pages).
Using modules in error pages[edit]
Modules cannot be included in error pages in the same way as the template’s index.php because you cannot use <jdoc:include> statements. There is an alternative way using JModuleHelper.
To include a single module by title, you can use:
if (JModuleHelper::getModule('menu')) { echo $doc->getBuffer('module', 'menu'); }
To include multiple modules by position, you can use:
$modules = JModuleHelper::getModules( 'footer_3' ); $attribs['style'] = 'xhtml'; foreach ($modules AS $module ) { echo JModuleHelper::renderModule( $module, $attribs ); }
Содержание
- 4 шага создания страницы 404 Not found на Joomla
- Вступление
- 4 простых шага создания страницы 404 Not found на Joomla
- Создаем страницу 404 в менеджере материалов
- Создаем меню для страницы 404
- Ищем или создаем файл error.php
- Редактируем файл error.php
- Смотрим результат
- SEO Проверка страницы 404 на Joomla
- Страница ошибки 404 в Joomla
- Что такое ошибка 404?
- Что такое страница ошибки 404?
- Страница ошибки 404 в шаблонах Joomla
- Создание страницы 404 в интерфейсе шаблона
- Видеоинструкция
- Пользовательские страницы ошибок
- Материал из Joomla! Documentation
- Содержание
- Переопределение результатов системных ошибок
- Переопределение стиля системы
- Настройка сообщений об ошибках
- Код статуса HTTP
- Дополнительная информация о коде состояния HTTP
- Использование заголовка и нижнего колонтитула темы на странице стандартных ошибок
- Использование модулей на страницах ошибок
- Страница ошибки 404 в Joomla 2.5 — 3.0 — 1.5 — оформленная в одном стиле с сайтом
- Создание страницы ошибки 404 в Joomla 2.5 и 3.0.
4 шага создания страницы 404 Not found на Joomla
Вступление
Страница ошибок, которую сервера 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).
4 простых шага создания страницы 404 Not found на Joomla
Алгоритм работ таков:
- Создать и оформить страницу 404;
- Создать пункт меню 404, опубликовать его, но скрыть от показа в меню;
- Поменять и отредактировать файл error.php рабочего шаблона;
- Проверить статус кода созданной страницы ошибок;
- Всё.
Создаем страницу 404 в менеджере материалов
На первом шаге, создадим страницу 404 в менеджере материалов сайта в рубрике «Uncategorized». Название может быть произвольное, но для удобства, назовем страницу «404». Оформление страницы 404 делаем «как душе угодно».
- Чтобы выделить страницу 404 из других страниц сайта, уберем с нее все информационные «обвесы»: показ категорий, автором, показов, дат публикации и т.д. Делаем это на странице добавления материалов, на вкладке: Отображение.
- Убираем со страницы все модули. Это делаем на странице Расширения→Менеджер модулей, на вкладке «Привязка модулей».
404 страницу незачем индексировать у поисковиков, поэтому на странице добавления материалов, закрываем 404 страницу тегами Noindex, Nofollow. Это делаем на вкладке: Создать материал — Публикация, пункт: Мета-тег Robots.
Сохраняем и публикуем страницу 404.
Создаем меню для страницы 404
Чтобы вывести страницу ошибок на сайт, нужно создать пункт меню с материалом «404». Для этого в любом меню сайта создаем пункт меню с понятным названием, например «404». Тип пункта меню выбираем, как «Материал», а материал выбираем созданную страницу «404».
Сохраняемся и копируем в поле «Ссылка», ссылку созданного пункта меню. Она нужна для дальнейшей прописки 404 страницы.
Ищем или создаем файл error.php
Системный файл ошибок Joomla лежит в каталоге: /templates/system. Копируем этот файл ошибок error.php, то копируем его и переносим (заменяем) из /templates/system в /templates/ваша-тема.
Проверяем «прописку» файла error.php в файле templateDetailis.xml. Если прописки нет, прописываем.
Редактируем файл error.php
В рабочем шаблоне ищем файл error.php или используем перенесенный файл error.php. Открываем это файл в текстовом редакторе и поиском ищем слово «404».
добавляем, удаляя старое:
, где после Location, вписываем скопированную ссылку пункта меню: «404».
было:
стало:
Сохраняемся и переносим отредактированный файл error.php в каталог рабочего шаблона, по FTPв режиме перезаписи.
Смотрим результат
Идем в панель сайта и в общих настройках «Система» чистим кэш. Теперь можно проверить отражение 404 страницы на сайте. Для этого в браузере после домена сайта, через слэш пишем любые буквы, жмем поиск и видим созданную 404 страницу. Если не видим свою страницу 404, чистим кэш браузера (ctrl+F5).
SEO Проверка страницы 404 на Joomla
Важно, чтобы на запрос созданной страницы ошибок 404, которая имеет бесконечное количество URL, сервер отдавал ответ 200 OK, а не 404 NotFound.
Проверить ответ сервера можно на своей странице Яндекс.Вебмастер, на вкладке Инструменты>>Проверка ответа сервера. Пишете свой домен, через слэш любой набор букв, жмете «Проверить». Ответ сервера должен быть 200 OK, Содержание страницы должно быть.
Источник
Страница ошибки 404 в Joomla
Узнайте, как правильно создать и настроить собственную страницу ошибки 404 для сайта на 3 и Joomla 4, отображаемую в интерфейсе шаблона.
Что такое ошибка 404?
Веб-сервер должен отправлять ответ 404 Not Found в случае, если соответствующего запрашиваемому URL-адресу ресурса не существует.
Что такое страница ошибки 404?
При этом сервер должен отдавать именно ответ 404 Not Found, а не перенаправлять пользователей на страницу со статусом 200 OK. Это очень важно, т. к. роботы поисковых систем принимают во внимание ответы сервера, и считают существующими все страницы со статусом 200 OK, который не запрещает индексировать такие страницы в поисковой системе, а это может способствовать появлению дублей страниц в поисковой выдаче и затруднит продвижение сайта в целом.
Страница ошибки 404 в шаблонах Joomla
Профессиональные всегда имеют в своём арсенале настроенную рабочую страницу 404-й ошибки, отображаемую при вводе несуществующих адресов.
Как правило, данных страниц сильно отличается от общего интерфейса шаблона, что может негативно сказаться на поведенческих факторах: некоторые пользователи могут «испугаться» и покинуть сайт. Во избежание таких потерь посетителей сайта на ровном месте мы рекомендуем создавать настраиваемую страницу для 404-ошибки, отображаемую в интерфейсе шаблона.
Создание страницы 404 в интерфейсе шаблона
Разберем по пунктам, как правильно создать и настроить собственную страницу ошибки 404 в теле стандартного шаблона Protostar для Joomla 3 с отображением контента в области компонента.
- Создать и опубликовать материал, который будет отображаться при запросе несуществующей страницы. Примеры опций:
- Заголовок: «Страница не найдена».
- : «error-404».
- Cодержание: «Указанной страницы не существует. Вероятно, она была удалена или перенесена на другой адрес.»
- Категория: «Uncategorised».
- Создать и опубликовать скрытый пункт меню данного материала с алиасом error-404:
- Во вкладке Параметры материала необходимо отключить показ всей лишней информации (Автор, Хиты, Дата публикации и т. д.).
- Во вкладке Параметры ссылки необходимо установить опцию Показать в меню на Нет, чтобы скрыть пункт меню.
- Во вкладке Параметры страницы можно прописать тег , который будет отображаться вместо названия материала. Например: «Ошибка 404 — страница не найдена».
- Во вкладке Метаданные выбрать значение метатега Robots noindex, nofollow.
- В папке шаблона (/templates/шаблон) создать или заменить существующий файл error.php, который должен содержать только следующий код:
- Проверяем функционирование страницы. По запросу несуществующего документа должен отображаться созданный материал.
- Проверяем ответ сервера для несуществующей страницы. Для этого можно воспользоваться панелью разработчика в браузере или сторонним веб-сервисом.
- Чтобы сделать страницу ошибки 404 более наглядной, рекомендуем добавить в её контент соответствующее изображение, которое без труда можно найти в поисковой выдаче картинок, а также отключить на ней ненужные модули.
Видеоинструкция
Упоминаемые термины:
Одна из самых популярных бесплатных CMS в мире. По результатам голосований на CMS Critic с 2014 по 2021, Joomla ежегодно получает титул Best Open Source CMS (лучшая CMS с открытым исходным кодом).
Текст, применяемый в Joomla для создания «человекопонятных» URL-адресов (ЧПУ) для определённых элементов контента (пунктов меню, материалов, категорий и т. д.).
Тип расширений для Joomla, отвечающих за расположение модулей и стилевое оформление лицевых страниц сайта или админки. От шаблона зависит то, как сайт будет выглядеть в глазах пользователей.
Веб-страницы, доступные для просмотра посетителям сайта. За внешний вид лицевых страниц в Joomla отвечают шаблоны.
Источник
Пользовательские страницы ошибок
Материал из Joomla! Documentation
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 3 years ago.
Joomla! использует файл templates/system/error.php для обработки нескольких ошибок статуса HTTP, включая ошибки «403 Forbidden», «404 Not Found» и «500 Internal Server». При желании вы можете стилизовать результаты ошибок.
Важно понимать, что error.php — это независимый файл от Joomla! CMS, но зависит от Joomla! Платформа. Плагины не запускаются в этом файле. Вы не можете включать модули или использовать операторы .
Содержание
Переопределение результатов системных ошибок
Чтобы переопределить результаты системных ошибок, скопируйте файл templates/system/error.php в каталогtemplates/ .
Если он найдет, Joomla! будет использовать файл error.php из текущего шаблона вместо системного файла.
При желании вы можете отформатировать страницу в соответствии с вашим шаблоном.
Переопределение стиля системы
Если вы хотите изменить стиль, скопируйте файл templates/system/css/error.css в каталог templates/ /css. Затем обновите файл templates/ /error.php, чтобы он ссылался на новое местоположение таблицы стилей, соответственно изменив эту строку:
Затем просто измените error.css, как вам нужно, для ваших требований к стилю.
Настройка сообщений об ошибках
Вы можете добавить условную логику, чтобы варьировать возвращаемое сообщение в зависимости от конкретного кода ошибки.
Вот пример того, как перехватить ошибку 404 и предоставить пользовательское сообщение.
Код статуса HTTP
Когда делается запрос на страницу на вашем сайте, сервер возвращает HTTP-код состояния в ответ на запрос. Joomla! возвращает ‘200 — сервер успешно вернул страницу’ для страниц с ошибками. Это проблематично для тех, кто работает со Службами Google для веб-мастеров и пытается решить проблему с картой сайта.
Если вы хотите чтобы Joomla! вернула код состояния ошибки, вы можете сделать это, добавив логику перед строкой DOCTYPE, следующим образом:
Дополнительная информация о коде состояния HTTP
Использование заголовка и нижнего колонтитула темы на странице стандартных ошибок
Если вы хотите видеть страницу ошибки в дизайне темы и вам не нравится перенаправление на URL страницы ошибки или дублирование HTML в шаблоне страницы ошибки, вот способ применить шаблон темы к странице ошибки.
Сначала поместите следующий код в templates/ /error.php:
Затем внесите следующие изменения в templates/ /index.php:
1. Найдите следующий код в index.php
и замените его следующим
2. Найдите следующий код в index.php
и замените его следующим
Теперь ваш шаблон темы применяется и к страницам ошибок.
Примечание: Модуль, включенный в шаблон, не будет работать на странице ошибок, созданной этим методом (но будет работать на других страницах).
Использование модулей на страницах ошибок
Модули не могут быть включены в страницы ошибок так же, как index.php шаблона, потому что вы не можете использовать операторы . Существует альтернативный способ использования JModuleHelper.
Чтобы включить один модуль по заголовку, вы можете использовать:
Чтобы включить несколько модулей по позиции, вы можете использовать:
Источник
Страница ошибки 404 в Joomla 2.5 — 3.0 — 1.5 — оформленная в одном стиле с сайтом
В этом уроке мы рассмотрим, как создать свою страницу ошибки 404 в Joomla 2.5, 3.0 и 1.5.
Ошибка 404 показывается посетителю в том случае если та страница, которую он запросил, не существует или была удалена с сайта.
По умолчанию в Joomla существует страница ошибки 404, но она имеет следующий вид:
Как вы можете видеть, она оформлена в виде отдельной страницы. Такой вариант данной страницы плох тем, что она показывается вне содержимого сайта и посетитель, который попал на такую страницу в 99% случаев уйдет из сайта. Да и выглядит данная страница, не очень хорошо выпадая из общего дизайна сайта.
Перед нами же, стоит задача удержать посетителя на сайте как можно дольше. Поэтому нам необходимо оформить данную страницу в виде стандартной страницы Joomla, которая будет выглядеть и содержать все элементы, как и на самом сайте.
Для этого зайдите в административную панель Joomla, создайте новый материал и дайте ему название, например «Ошибка 404 — страница не найдена». В самом материале напишите, какое либо сообщение и при желании дайте ссылки на определенные разделы сайта, куда бы мог перейти посетитель, попавший на эту страницу или большую поисковую форму.
Например, для данного сайта я указал следующую информацию на данной странице:
Для Joomla 2.5 и 3.0 в настройках материала из выпадающего списка «Категория» выберите «Uncategorised».
Для Joomla 1.5 в настройках материала, из выпадающих списков «Раздел» и «Категория» выберите «Не указанно»;
Т. е. создайте так называемый статичный материал не принадлежащий ни одной категории. После этого сохраните данный материал и запомните его идентификатор (id). Его вы можете найти на странице создания материала: «ID Материала:» XX.
Теперь в начале рассмотрим создание страницы 404 в Joomla 2.5 и 3.0, а затем как это сделать в устаревшей версии Joomla 1.5.
Создание страницы ошибки 404 в Joomla 2.5 и 3.0.
Для начала перейдите в папку: ваш сайт/ templates/system/, скопируйте имеющийся там файл error.php в папку: ваш сайт/ templates/ваша-тема. Это необходимо сделать потому, что данный файл мы будем редактировать и чтобы при последующем обновлении системы все наши изменения не пропали, мы скопировали его в папку с нашей темой.
Откройте данный файл при помощи какого либо редактора кода. Найдите в нем следующую строку:
Удалите все содержимое данного файла ниже данной строки и вставьте вместо его следующий код:
После этого в строчке: index.php?option=com_content&view=article&id=XX, замените XX на id того материала, который мы создавали для использования в качестве страницы 404. Сохраните файл. После этого все будет готово.
Можно еще создать короткий адрес для вашей страницы 404. Для этого создайте, (если у вас еще такового нет), скрытое меню т. е. меню которое вы не будете выводить на сайте при помощи модуля. В данном меню создайте пункт меню ведущий на материал используемый в качестве ошибки 404.
- в поле «Тип пункта меню» выберите «Материал»;
- в поле «Выберите материал» укажите материал используемый для страницы 404;
- в поле «Заголовок меню» можете указать что ни будь типа: «Ошибка 404 страница не найдена»;
- в поле «Алиас» error-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.
- Создать и опубликовать материал, который будет отображаться при запросе несуществующей страницы. Примеры опций:
- Заголовок: «Страница не найдена».
- Алиас: «error-404».
- Cодержание: «Указанной страницы не существует. Вероятно, она была удалена или перенесена на другой адрес.»
- Категория: «Uncategorised».
- Создать и опубликовать скрытый пункт меню данного материала с алиасом error-404:
- Во вкладке Параметры материала необходимо отключить показ всей лишней информации (Автор, Хиты, Дата публикации и т. д.).
- Во вкладке Параметры ссылки необходимо установить опцию Показать в меню на Нет, чтобы скрыть пункт меню.
- Во вкладке Параметры страницы можно прописать тег
<title>
, который будет отображаться вместо названия материала. Например: «Ошибка 404 — страница не найдена». - Во вкладке Метаданные выбрать значение метатега Robots noindex, nofollow.
- В папке шаблона (/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; }
- Проверяем функционирование страницы. По запросу несуществующего документа должен отображаться созданный материал.
- Проверяем ответ сервера для несуществующей страницы. Для этого можно воспользоваться панелью разработчика в браузере или сторонним веб-сервисом.
- Чтобы сделать страницу ошибки 404 более наглядной, рекомендуем добавить в её контент соответствующее изображение, которое без труда можно найти в поисковой выдаче картинок, а также отключить на ней ненужные модули.
Видеоинструкция
Вступление
Страница ошибок, которую сервера 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).
4 простых шага создания страницы 404 Not found на Joomla
Алгоритм работ таков:
- Создать и оформить страницу 404;
- Создать пункт меню 404, опубликовать его, но скрыть от показа в меню;
- Поменять и отредактировать файл error.php рабочего шаблона;
- Проверить статус кода созданной страницы ошибок;
- Всё.
Создаем страницу 404 в менеджере материалов
На первом шаге, создадим страницу 404 в менеджере материалов сайта в рубрике «Uncategorized». Название может быть произвольное, но для удобства, назовем страницу «404». Оформление страницы 404 делаем «как душе угодно».
- Чтобы выделить страницу 404 из других страниц сайта, уберем с нее все информационные «обвесы»: показ категорий, автором, показов, дат публикации и т.д. Делаем это на странице добавления материалов, на вкладке: Отображение.
- Убираем со страницы все модули. Это делаем на странице Расширения→Менеджер модулей, на вкладке «Привязка модулей».
404 страницу незачем индексировать у поисковиков, поэтому на странице добавления материалов, закрываем 404 страницу тегами Noindex, Nofollow. Это делаем на вкладке: Создать материал — Публикация, пункт: Мета-тег Robots.
Сохраняем и публикуем страницу 404.
Создаем меню для страницы 404
Чтобы вывести страницу ошибок на сайт, нужно создать пункт меню с материалом «404». Для этого в любом меню сайта создаем пункт меню с понятным названием, например «404». Тип пункта меню выбираем, как «Материал», а материал выбираем созданную страницу «404».
Сохраняемся и копируем в поле «Ссылка», ссылку созданного пункта меню. Она нужна для дальнейшей прописки 404 страницы.
Ищем или создаем файл error.php
Системный файл ошибок Joomla лежит в каталоге: /templates/system. Копируем этот файл ошибок error.php, то копируем его и переносим (заменяем) из /templates/system в /templates/ваша-тема.
Проверяем «прописку» файла error.php в файле templateDetailis.xml. Если прописки нет, прописываем.
Редактируем файл 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».
было:
стало:
Сохраняемся и переносим отредактированный файл error.php в каталог рабочего шаблона, по FTPв режиме перезаписи.
Смотрим результат
Идем в панель сайта и в общих настройках «Система» чистим кэш. Теперь можно проверить отражение 404 страницы на сайте. Для этого в браузере после домена сайта, через слэш пишем любые буквы, жмем поиск и видим созданную 404 страницу. Если не видим свою страницу 404, чистим кэш браузера (ctrl+F5).
SEO Проверка страницы 404 на Joomla
Важно, чтобы на запрос созданной страницы ошибок 404, которая имеет бесконечное количество URL, сервер отдавал ответ 200 OK, а не 404 NotFound.
Проверить ответ сервера можно на своей странице Яндекс.Вебмастер, на вкладке Инструменты>>Проверка ответа сервера. Пишете свой домен, через слэш любой набор букв, жмете «Проверить». Ответ сервера должен быть 200 OK, Содержание страницы должно быть.
©Joomla3-x.ru
Другие статьи разделов: CMS Joomla и оптимизация
0 Пользователей и 1 Гость просматривают эту тему.
- 25 Ответов
- 1644 Просмотров
Недавний топик побудил меня подумать о стандартном выводе ошибок через файл шаблона error.php. В этой теме приведена ссылка на мануал, в котором, на мой взгляд, описан вредный хак, а не способ реализации: суть заключается в том, что при обращении к файлу error.php вызывается редирект на другую страницу с материалом и отдаётся заголовок с кодом 404. На мой взгляд, этот способ не только корявый в плане реализации, но его так же опасно использовать с точки зрения SEO. К тому же, он не позволяет вывести описание ошибки (потом попробуй угадай).
Признаться, мне было всегда проще сделать HTML версию страницы, чем динамически отображать шаблон с подключенными внешними ресурсами и модулями. После нескольких часов кодинга я разработал свой динамический метод вывода ошибок, который выводит все скрипты, стили, модули — рендерит шаблон через index.php. Хотелось бы поделиться им
« Последнее редактирование: 14.02.2016, 07:44:47 от Филипп Сорокин »
Записан
Мануал корявый
Роутер еще корявее — вот объясни мне, когда неверный URL ведет на
1) другую страничку (дубль)
2) перехватывается системой и доступен в менеджере перенаправлений
3) не перехватывается плагином перенаправлений но ведет на 404 от движка
4) вообще не видится и отдается ответ напрямую от nginxapache
Внутри файла error.php можно получить и код ошибки (для дальнейшего формирования нужного хедера) и ее описание:
$error_code = $this->error->getcode();
$error_description = htmlspecialchars($this->error->getMessage(), ENT_QUOTES, 'UTF-8');
а уж получив эти данные, можно что угодно с ними делать и передавать куда и как угодно…
в случае возникновения
4) вообще не видится и отдается ответ напрямую от nginxapache
вопрос уже не к J ))
в случае возникновения вопрос уже не к J ))
Почему?
Я же использую дефолтный .htaccess!
вообще не видится и отдается ответ напрямую от nginxapache
Тоже с этим сталкивался: так и не понял причину.
Тоже с этим не раз сталкивался: так и не понял причину.
Во-во.
Даешь глубокое исследование!
Вот и сама реализация:
(Удалено по причине потери актуальности)
« Последнее редактирование: 13.02.2016, 23:40:51 от Филипп Сорокин »
Записан
Кстати, существуют ли способы отрендерить шаблон методами движка?
Кстати, существуют ли способы отрендерить шаблон методами движка?
Придётся самому отвечать на свой вопрос
Удалось здорово сократить и улучшить код: теперь в шаблоне нет никаких ограничений, т.к. он выполняется в контексте JDocumentHTML, а не в контексте JDocumentError. На дефолтном Protostar работает отлично, все стандартные методы и свойства доступны из псевдопеременной $this.
« Последнее редактирование: 14.02.2016, 07:53:55 от Филипп Сорокин »
Записан
Окончательно закрыл для себя вопрос создания страницы ошибок — теперь эта страница ничем не отличается от обычных страниц, а её контент обрабатывается системными плагинами. Содержимое страницы может быть изменено как угодно, при этом оно не будет зависеть от разметки и оформления шаблона. И что самое главное — для всей этой красоты не нужно устанавливать никаких сторонних расширений — нужно всего лишь создать один файл и изменить другой. Кому интересно — выложил на своём сайте полную реализацию.
А зачем обрабатывать 404-ю плагинами?
честно говоря вообще не понимаю, зачем это разве что из спортивного интереса… что не так было с базовым error.php?
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
А зачем обрабатывать 404-ю плагинами?
Потому что плагинами обрабатываются все страницы. Чем 404 хуже? Системный плагин SEF, для примера, надо запустить, чтобы скорректировать ссылки? Надо. В предыдущей версии парсил регулярками — не понравилось. Решил плагином =)
честно говоря вообще не понимаю, зачем это Azn разве что из спортивного интереса… что не так было с базовым error.php?
Что конкретно вы не понимаете? Если вы будете использовать базовый error.php, то при любом изменении шаблона нужно отдельно менять дизайн, раскладку в error.php, потому что базовый error.php к шаблону не относится.
Короче, народ не понял ничего Мда…
Если вы будете использовать базовый error.php, то при любом изменении шаблона нужно отдельно менять дизайн, раскладку в error.php, потому что базовый error.php к шаблону не относится.
Зачем дизайн менять? Вот часто используемый известный вариант error.php с подгрузкой статьи «404»:
Что в этом варианте вас не устроило?
Записан
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
Что конкретно вы не понимаете?
та не, я ниче я вообще за любой кипиш кроме голодовки
просто тут так сказать глубину мысли не познал
например
Если вы будете использовать базовый error.php, то при любом изменении шаблона нужно отдельно менять дизайн
а в вашем решении разве не надо менять дизайн? разница только в том, что это внешний файл и его копировать надо? так скопировать просто error.php из старого шаблона, и все. разве нет?
потом
базовый error.php к шаблону не относится
это как? как это не относится? может мы о разных error.php? я о том, который в корне шаблона.
дальше, обработка плагинами. ну тут вопрос спорный… я наверное все таки склоняюсь в сторону, что 404 не нужно обрабатывать плагинами. потому что 404 рисуется раз и навсегда, и я бы не хотел чтобы при установке какого либо плагина, который нужен во фронте, 404 поломалась по недосмотру из-за него.
поэтому не то, чтобы
Короче, народ не понял ничего
Мда…
задумку поняли. не поняли — зачем?
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Зачем дизайн менять? Вот часто используемый известный вариант error.php с подгрузкой статьи «404»:
Что в этом варианте вас не устроило?
fsv, ну я уже написал в начале. Во-первых, не известно, как поисковики к этому отнесутся: пользователю отдаётся 404 ошибка, а его самого перебрасывает на другую страницу. Возможна пессимизация. Во-вторых, при перенаправлении теряется контекст JDocumentError — мы уже не сможем работать с объектом ошибки, например, для того, чтобы вывести описание. Ну и последнее: это не всегда работает корректно, и я считаю, что это хак.
а в вашем решении разве не надо менять дизайн?
Нет. Дизайн и раскладка берётся из шаблона со всеми стилями, скриптами, модулями. По-сути, мой вариант — это обычная страница, только позиция компонента (который отсутствует при ошибке), замещается телом ошибки.
дальше, обработка плагинами. ну тут вопрос спорный… я наверное все таки склоняюсь в сторону, что 404 не нужно обрабатывать плагинами. потому что 404 рисуется раз и навсегда, и я бы не хотел чтобы при установке какого либо плагина, который нужен во фронте, 404 поломалась по недосмотру из-за него.
Вы отдаёте заголовок 404 и после этого можете менять страницу ошибки как захочется — боту главное получить заголовок.
fsv, ну я уже написал в начале. Во-первых, не известно, как поисковики к этому отнесутся: пользователю отдаётся 404 ошибка, а его самого перебрасывает на другую страницу.
кого куда перебрасывает?
Записан
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
пока почитал, подумал: а не хотите в теме всё не расказывать и этим самым обламать и туда: в комм раздел? и там писать
может не прав, что подумал.имхо.
Записан
Миграция, установка, обновление версий Joomla | Создание сайтов «под ключ» | Эксклюзивные заглушки «offline» | Работа с «напильником» над шаблонами и расширениями
Нет. Дизайн и раскладка берётся из шаблона со всеми стилями, скриптами, модулями. По-сути, мой вариант — это обычная страница, только позиция компонента (который отсутствует при ошибке), замещается телом ошибки.
понял наконец-то уж извините, вообще не думал о таком варианте. считаю его неверным.
пользователю отдаётся 404 ошибка, а его самого перебрасывает на другую страницу.
никуда никого не перебрасывает. все 1:1 как и в вашем варианте, за исключением того, что ваш вариант экономнее по ресурсам сервера.
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
кого куда перебрасывает?
А, простите. Не увидел: там file_get_contents. Похожий способ просто есть, но только с перенаправлением.
никуда никого не перебрасывает. все 1:1 как и в вашем варианте, за исключением того, что ваш вариант экономнее по ресурсам сервера.
Ну я бы не сказал, что один в один. Мы теряем контекст JDocumentError, мы не можем вывести описание ошибки и использовать методы этого объекта. Гибкость также теряется: если сайт мультиязычный, то для каждого типа ошибки мы должны наплодить по 2-3 материала на разных языках. Наконец имеется лишний запрос (это, конечно, не очень существенно, но, я считаю, что криво).
А если материал вдруг удалить, то вообще будет полное разочарование
Мы теряем контекст JDocumentError, мы не можем вывести описание ошибки и использовать методы этого объекта.
if ($this->error->getCode() == '404')
{
echo $this->error->getMessage(). '<br>';
echo '<pre>'.print_r($this, true).'</pre>'; // JDocumentError Object
}
А если материал вдруг удалить, то вообще будет полное разочарование
если у бабушки…, то это уже дедушка
Записан
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
теряется контекст JDocumentError — это имеется в виду когда делаем file_get_contents. это же уже не 404.
в целом так и есть, предложенный вариант более гибок чем file_get_contents. кто любит так делать 404 — можно советовать
Записан
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
fsv
Ну и как вы сделаете это в материале? Представьте, что у вас SQL ошибка, нужно вывести описание, а вы цепляете другой материал и выводите страницу данного материала. Где вы будете выводить там описание и как?
если у бабушки…, то это уже дедушка
Ну… это отсылки к рыжему и конопатому. А вот при недоступности страницы реально может случиться что-то вроде бесконечного перенаправления, только в 100 раз хуже. Как откроет бот удалённую страницу — и конец настанет вашему серверу
теряется контекст JDocumentError — это имеется в виду когда делаем file_get_contents. это же уже не 404.
да, в file_get_contents не будет ошибки. При ответе не об этом думал, потому что…
Ну и как вы сделаете это в материале? Представьте, что у вас SQL ошибка, нужно вывести описание, а вы цепляете другой материал и выводите страницу данного материала. Где вы будете выводить там описание и как?
… я не буду выводить все подряд ошибки. Это вредно для здоровья. Для юзера хватит стандартных фраз в материале, никто письма вам писать не будет. Ошибка – в логах.
И да, имея текст ошибки в переменной, в чем проблема его использовать на подгруженной в другую переменную странице? Извращение какое-то, но это так, теоретически…
Да я не против. Подобные раскопки на самом деле очень полезны. Всегда что-то нужное вынесешь. Только по этой теме – я так пока повторять не готов.
Записан
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
Описание определенных ошибок можно сделать доступным для супер-администраторов. Все в одном файле, не нужно создавать никакие материалы. Вот вы говорите, что это извращение — выводить красиво отформатированное описание ошибки в позиции компонента, а я считаю извращением при отладке лезть в логи. Обновил страницу — лезь опять в логи. Зачем? Логи проверять, конечно, полезно, но не в этом случае. Ещё я считаю извращением подгружать какие-то переменные в других пространствах имён. А при запросе к другому материалу подгружать в этом материале переменные — это настоящее извращение.
« Последнее редактирование: 14.02.2016, 19:49:21 от Филипп Сорокин »
Записан
Ошибка 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. Что и требовалось получить.
- Подробности
- Категория: CMS (Joomla, Drupal..)
<?php
/**
* @package Joomla.Site
* @copyright Copyright (C) 2005 — 2014 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
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->get(‘code’) == ‘404’) {
header(«HTTP/1.0 404 Not Found»);
header(‘Location: index.php’);
exit;} ?>
Иные подробности…..
В этом уроке мы рассмотрим, как создать свою страницу ошибки 404 в Joomla 2.5, 3.0 и 1.5.
Ошибка 404 показывается посетителю в том случае если та страница, которую он запросил, не существует или была удалена с сайта.
По умолчанию в Joomla существует страница ошибки 404, но она имеет следующий вид:
Как вы можете видеть, она оформлена в виде отдельной страницы. Такой вариант данной страницы плох тем, что она показывается вне содержимого сайта и посетитель, который попал на такую страницу в 99% случаев уйдет из сайта. Да и выглядит данная страница, не очень хорошо выпадая из общего дизайна сайта.
Перед нами же, стоит задача удержать посетителя на сайте как можно дольше. Поэтому нам необходимо оформить данную страницу в виде стандартной страницы Joomla, которая будет выглядеть и содержать все элементы, как и на самом сайте.
Для этого зайдите в административную панель Joomla, создайте новый материал и дайте ему название, например «Ошибка 404 — страница не найдена». В самом материале напишите, какое либо сообщение и при желании дайте ссылки на определенные разделы сайта, куда бы мог перейти посетитель, попавший на эту страницу или большую поисковую форму.
Например, для данного сайта я указал следующую информацию на данной странице:
Для Joomla 2.5 и 3.0 в настройках материала из выпадающего списка «Категория» выберите «Uncategorised».
Для Joomla 1.5 в настройках материала, из выпадающих списков «Раздел» и «Категория» выберите «Не указанно»;
Т. е. создайте так называемый статичный материал не принадлежащий ни одной категории. После этого сохраните данный материал и запомните его идентификатор (id). Его вы можете найти на странице создания материала: «ID Материала:» XX.
Теперь в начале рассмотрим создание страницы 404 в Joomla 2.5 и 3.0, а затем как это сделать в устаревшей версии Joomla 1.5.
Создание страницы ошибки 404 в Joomla 2.5 и 3.0.
Для начала перейдите в папку: ваш сайт/ templates/system/, скопируйте имеющийся там файл error.php в папку: ваш сайт/ templates/ваша-тема. Это необходимо сделать потому, что данный файл мы будем редактировать и чтобы при последующем обновлении системы все наши изменения не пропали, мы скопировали его в папку с нашей темой.
Откройте данный файл при помощи какого либо редактора кода. Найдите в нем следующую строку:
<
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->get(
'code'
) ==
'404'
) {
header(
"HTTP/1.0 404 Not Found"
);
header(
'Location: index.php?option=com_content&view=article&id=XX'
);
exit
;} ?>
После этого в строчке: index.php?option=com_content&view=article&id=XX, замените XX на id того материала, который мы создавали для использования в качестве страницы 404. Сохраните файл. После этого все будет готово.
Можно еще создать короткий адрес для вашей страницы 404. Для этого создайте, (если у вас еще такового нет), скрытое меню т. е. меню которое вы не будете выводить на сайте при помощи модуля. В данном меню создайте пункт меню ведущий на материал используемый в качестве ошибки 404.
Для этого:
- в поле «Тип пункта меню» выберите «Материал»;
- в поле «Выберите материал» укажите материал используемый для страницы 404;
- в поле «Заголовок меню» можете указать что ни будь типа: «Ошибка 404 страница не найдена»;
- в поле «Алиас» error-404.
И нажмите «Сохранить».
Теперь после переадресации на страницу 404 ее адрес будет вида: http://ваш-сайт.ru/error-404.html. Можете попробовать ввести адрес любой несуществующей страницы и проверить результат.
Еще можно заблокировать данную страницу в файле robots.txt, чтобы она не индексировалась поисковыми системами. Для этого в robot.txt добавьте следующее: Disallow: /error-404.html .
Создание страницы ошибки 404 в Joomla 1.5.
Пройдите в папку: ваш сайт/ templates/system/ и откройте, при помощи какого либо HTML редактора файл: error.php.
Найдите в этом фале строку:
Удалите все что находится в этом файле ниже данной строки и вставьте следующее:
<?php defined(
'JPATH_BASE'
)
or
die
();
echo
file_get_contents
(JURI::root().
'index.php?option=com_content&view=article&id=43'
);
?>
Только вместо значения «43» укажите идентификатор того материала который вы создали выше, для отображения в качестве страницы ошибки 404.
После этого сохраните данный файл и попробуйте в адресной строке браузера набрать адрес, какой либо страницы вашего сайта, которая не существует, например: http://ваш-сайт.ru/bla-bla.html. В результате если вы все сделали правильно, то перед вами появится собственная страница ошибок 404, которая выводится в рамках самого сайта.
Если вам необходим качественный, надежный хостинг для сайта, то можете воспользоваться обзором хостингов размещенном на нашем сайте, здесь вы сможете подобрать как качественный виртуальный хостинг так и хостинг VPS.
Материал подготовлен проектом: WebMasterMix.ru