[FAQ] Собственная страница 404 ошибки для Joomla 2.5

  • 166 Ответов
  • 79724 Просмотров

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

*

b2z

  • *****
  • 7449
  • [+]740 / [-]0
  • Разраблю понемногу

*

NightGuard

  • *******
  • 3025
  • [+]378 / [-]7
  • вжжж-вжжж
Не нужно ковырять мозг, используйте error.php - всегда будете получать правильные коды ошибок, и не только обработку 404.

http://joomlaforum.ru/index.php/topic,210051.0.html
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма

skype: nightguardsrussia - только по рабочим вопросам, любые консультации - платные!

*

yunoshev

@ALL
Господа, а кто Вам мешает использовать com_qlue404? Прост и удобен.
Любая страница, которой нет на сайте, будет отображена через этот компонент.

Пример работы: www.sutki-dom.ru/arenda.html

*

Fedor Vlasenko

  • ********
  • 3799
  • [+]704 / [-]6
  • Все начинается с Value
@ALL
Господа, а кто Вам мешает использовать com_qlue404? Прост и удобен.
Любая страница, которой нет на сайте, будет отображена через этот компонент.
И получать ответ сервера 200 ОК ?

*

yunoshev

@Poznakomlus
А показ компонента в теле сайта это не 200 ОК?  :)
В комплекте имеется также плагин. Посмотрите пример работы.

*

yunoshev

@Poznakomlus
Пардон! Он не дает 200 ОК... засада, однако... :)

*

Fedor Vlasenko

  • ********
  • 3799
  • [+]704 / [-]6
  • Все начинается с Value
Да не увидел сразу 404 подтверждаю :D
404

*

lubitel3

Цитировать
@ALL
Господа, а кто Вам мешает использовать com_qlue404? Прост и удобен.
Любая страница, которой нет на сайте, будет отображена через этот компонент.
Да... Это конечно хорошо... почти как из пушки по воробъям ;)
Ставить целый компонент только ради того, что бы не править код одной странички, под свой дизайн, что занимает минут 15-30?
тогда наверно да.

*

yunoshev

@lubitel3
Уважаемый, тут 50% не знают, на чем работают сайты под управлением Joomla, а когда речь заходит о правках кода, то это их вводит в ступор...

*

NightGuard

  • *******
  • 3025
  • [+]378 / [-]7
  • вжжж-вжжж
yunoshev, но как по мне, так проще за час сделать годную страницу ошибок из error.php, чем ставить под это отдельный компонент. Ко всему прочему по желанию могу выдернуть вывод как внутри шаблона, так и изменить под требования клиента до неузнаваемости.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма

skype: nightguardsrussia - только по рабочим вопросам, любые консультации - платные!

Привет! Народ помогите, столкнулся с такой проблемой...
сделал собственную страницу по вашим примерам на основе error.php, всё ок, страница - отдает код "404 Not Found"... но проблема в том, что она срабатывает только по "неправильным урлам" в которых есть "-" (тире), вот пример:
http://www.porta-market.ru/catalog.html  -  валидная страница
http://www.porta-market.ru/cataaaaaaaalog.html  - по идее должна быть 404 (((
http://www.porta-market.ru/cataaaaa-aaalog.html  - и вот только в таком варианте отдается 404 страница с ошибкой...

я подозреваю что эт чет с настройками, но не могу понять где(, ну или посетуйте где можно че-то "подпилить" в коде, я поправлю.

Заранее спасибо!)

Господа, я так и не понял как сделать редирект с 404 на главную страницу
в какой файл и что вставить - помогите :(
на 1.5 у меня все получилось, делаю сайт на 2.5 - не могу этого сделать :(
« Последнее редактирование: 23.04.2012, 23:40:29 от злобный ламер »

*

noname-dev

Господа, я так и не понял как сделать редирект с 404 на главную страницу
в какой файл и что вставить - помогите :(
на 1.5 у меня все получилось, делаю сайт на 2.5 - не могу этого сделать :(
Этого не нужно делать, где вы такое вычитали? Редирект с несуществующей на главную - это зло!

Знатоки подскажите, имею страницу 404 от разработчиков шаблона, при выводе страницы, внизу есть типа ссылка на главную страницу, но она не броская и есть вероятность что клиент просто соскочить. Вверху есть лого сайта, оно уж точно бросается в глаза, вопрос как его сделать переходом на главную сайта, а то при нажатии просто обновляется страница 404 ошибки?!

Этого не нужно делать, где вы такое вычитали? Редирект с несуществующей на главную - это зло!
Вот не знаю где нашли таких знатоков, а мне нужно чтоб клиент не уходил с сайта, а попадал на главную страницу, в вот зло это или нет, уж решать мне.
яндекс прекрасно увидит что страницы нет, поверьте мне :)

Привет! Народ помогите, столкнулся с такой проблемой...
сделал собственную страницу по вашим примерам на основе error.php, всё ок, страница - отдает код "404 Not Found"... но проблема в том, что она срабатывает только по "неправильным урлам" в которых есть "-" (тире), вот пример:
http://www.porta-market.ru/catalog.html  -  валидная страница
http://www.porta-market.ru/cataaaaaaaalog.html  - по идее должна быть 404 (((
http://www.porta-market.ru/cataaaaa-aaalog.html  - и вот только в таком варианте отдается 404 страница с ошибкой...

я подозреваю что эт чет с настройками, но не могу понять где(, ну или посетуйте где можно че-то "подпилить" в коде, я поправлю.

Заранее спасибо!)

Ребят, есть идеи??(

*

yunoshev

@Poznakomlus
Я тут подумал, а зачем поисковикам отдавать 200 ОК на страницу, которой у меня на сайте нет и не будет? 404 для того и есть, чтобы указать, что данной страницы нет на сайте, а потому это будет командой для умных поисковиков выкинуть страницу из индекса. Мне не нужны тонны несуществующих страниц в индексных базах поисковиков. Нормальный SEO предполагает, что как раз страница сайта либо есть, либо ее нет, а приведенные здесь решения именно для "живых" посетителей сайтов, у которых либо "рука дрогнула" при наборе адреса :)  либо была старая ссылка в кеше поисковика, а значит надо ему дать понять, что с сайтом все ОК, а просто нет такой страницы.
Что-то Вы, уважаемый, перегибаете или не в том направлении думаете. :)

*

Rival

Понравились прикольные страницы 404
http://www.dejurka.ru/web-design/mistakes-404-3/
сделал свою, у меня сайт строительной тематики, я туда Джамшута с Равшаном поставил,
с несколькими их цитатами.
Как делал, в файле error.php удалил весь код, открыл гугловскую страницу с ошибкой 404,
скопировал HTML код , заменил картинки на свои и свой текст написал. Все.
Пару идей, можно использовать плакаты, типа а ты записался добровольцем, со своим текстом. Известные картины например черный квадрат Малевича. Или страницу из поисковика сообщающая что страница может нанести вред компьютеру. И т д. Пользуйтесь.   
« Последнее редактирование: 30.04.2012, 21:44:21 от Rival »

*

Marques

Вау, круто... видимо стоило писать об этом в прикрепленную тему, реально помогло! Вот только интересно... а чего это у меня теперь страница не отдает 404 в заголовке? А почему она теперь открывается по прямой ссылке... Не подскажете ?
Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги - http://dtkp.ru/ s@dtkp.ru

*

NightGuard

  • *******
  • 3025
  • [+]378 / [-]7
  • вжжж-вжжж
Как делал, в файле error.php удалил весь код, открыл гугловскую страницу с ошибкой 404,
скопировал HTML код , заменил картинки на свои и свой текст написал. Все.
а чего это у меня теперь страница не отдает 404 в заголовке? А почему она теперь открывается по прямой ссылке... Не подскажете ?
Потому что заголовки убраны, а готовая страница естественно отдает 200.
Идеология сверхпотребления более опасна для человечества, чем идеология гитлеровского тоталитаризма

skype: nightguardsrussia - только по рабочим вопросам, любые консультации - платные!

*

yrygvay

Rival -спасибо поступил по вашему примеру!
Смотрю....

*

АН

Добрый день, коллективный разум!
У меня особая ситуация - сделал все так, как писал alp.

А как быть с вложениями?
Вот посмотрите пожалуйста на эту ссылку http://bilet.oblavtotrans.ru/index.php?option=com_content&view=article&id=39 - 404 страница без вложений
и на эту ссылку http://bilet.oblavtotrans.ru/avtomatika/index.php?option=com_content&view=article&id=39 - 404 страница с вложениями

Это можно как то вылечить?




*

Dobreff

Интересно следующее:
Страницу вынесли в FAQ
Можно спросить того кто вынес ее? Какое тут решение? Тут их несколько и не понятно какое кривое, а какое рабочее.
Для 1.5 да есть, но топик для 1.6/1.7/2.5

Люди, а подскажите пожалуйста как сделать две разные страницы 404? Сайт у меня на двух языках и соответственно нужны две разные страницы! Это вообще возможно? Я уже мозг себе сломал и интернет, а ответа все нет. Помогите пожалуйста.

*

yrygvay

Интересно следующее:
Страницу вынесли в FAQ
Можно спросить того кто вынес ее? Какое тут решение? Тут их несколько и не понятно какое кривое, а какое рабочее.
Для 1.5 да есть, но топик для 1.6/1.7/2.5

каждое из них нормальное!
мне подошло от Rival
Смотрю....

*

Abel

По воле случая пришлось менять урлы.
тема не нова, но мож кому пригодится.

Здесь:
www/ваш сайт/templates/system/

1. скопировал себе на комп файл - error.php
2. В нём удалил всё что находится между <head>...</head>

пример кода:
<head>
<title><?php echo $this->error->getCode(); ?> - <?php echo $this->title; ?></title>
<link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/error.css" />
<?php if ($this->direction == 'rtl') : ?>
<link rel="stylesheet" href="/<?php echo $this->baseurl; ?>/templates/system/css/error_rtl.css" />
<?php endif; ?>
</head>

3. На сайте создал материал (без категории). Назвал - Ошибка 404.

В нём прописал: (текст естественно на ваше усмотрение)

Вас случайно занесло на страницу которой не существует.
Это могло произойти по разным причинам, например ссылка устарела.
Через некоторое время новые ссылки будут проиндексированы и всё вернётся на свои места.
Предлагаем пройти на главную страницу сайта, там вы сможете просмотреть интересующий вас материал в полном объёме.

перейти  >> (это сделал ссылкой на главную)

4. В самом редакторе (где создавал материал) отключил редактор (кнопкой отключить редактор)
5. В окне редактора скопировал весь код с текстом
6. в файле - error.php
 
удалил этот кусок кода:

<div id="errorboxbody">
         <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>
         <div id="techinfo">
         <p><?php echo $this->error->getMessage(); ?></p>
         <p>
            <?php if ($this->debug) :
               echo $this->renderBacktrace();
            endif; ?>
         </p>
         </div>

и вместо него, вставил то, что скопировал в окне редактора:

<p style="text-align: center;">Вас случайно занесло на страницу которой не существует.</p>
<p style="text-align: center;">Это могло произойти по разным причинам, например ссылка устарела. </p>
<p style="text-align: center;">Через некоторое время новые ссылки будут проиндексированы и всё вернётся на свои места. </p>
<p style="text-align: center;">Предлагаем пройти на главную страницу сайта, там вы сможете просмотреть интересующий вас материал в полном объёме.</p>
<p style="text-align: center;"><a href="http://www.вашсайт/">перейти  &gt;&gt;</a></p>
<p style="text-align: center;"> </p>

(конечный вариант)

<body>
   <div class="error">
      <div id="outline">
      <div id="errorboxoutline">
         <div id="errorboxheader"><?php echo $this->error->getCode(); ?> - <?php echo $this->error->getMessage(); ?></div>

<p style="text-align: center;">Вас случайно занесло на страницу которой не существует.</p>
<p style="text-align: center;">Это могло произойти по разным причинам, например ссылка устарела. </p>
<p style="text-align: center;">Через некоторое время новые ссылки будут проиндексированы и всё вернётся на свои места. </p>
<p style="text-align: center;">Предлагаем пройти на главную страницу сайта, там вы сможете просмотреть интересующий вас материал в полном объёме.</p>
<p style="text-align: center;"><a href="http://www.вашсайт/">перейти  &gt;&gt;</a></p>
<p style="text-align: center;"> </p>

         </div>
      </div>
      </div>
   </div>
</body>
</html>

7. Сохранил всё это в utf-8
8. через ftp закинул в папку шаблона

сюда:
www/ваш сайт/templates/ваш шаблон/

Теперь те, кто приходит по старой ссылке, попадает на страницу 404 с моим текстом.
Каждый человек, которого я встречаю, в чем-то превосходит меня, и в этом смысле я могу у него поучиться.(Ральф Эмерсон, американский философ)

*

Jolala

Господа, я так и не понял как сделать редирект с 404 на главную страницу
в какой файл и что вставить - помогите :(
на 1.5 у меня все получилось, делаю сайт на 2.5 - не могу этого сделать :(
Я поступила так:  в еррор.пхп подправила на, теперь переходит а главную не выдавая никаких сообщений, мне так больше нравитсо.
<!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; ?>">
<head>
</head>
<body>
<?php
if ($this->_error->get('code') == '404') {
header("HTTP/1.0 404 Not Found");
header('Location: index.php');
exit;
}
?>
</body>
</html>

*

Marques

Хороший способ с хабра.

Меняем код стрницы error.php которая находится в /templates/system/error.php
на :
Код: php
<?php 

defined('JPATH_BASE') or die();
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=ID');

?>

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

Еще несколько способов по ссылке http://habrahabr.ru/post/148008/
Зануда перфекционист, не признающий авторитетов, ищет легкую работу за большие деньги - http://dtkp.ru/ s@dtkp.ru

*

Fedor Vlasenko

  • ********
  • 3799
  • [+]704 / [-]6
  • Все начинается с Value
Хороший способ с хабра.
Странно, здесь решение раньше опубликовано было.
Файл error.php не только за 404 ошибку отвечает (но и вывод других). Так получается ничего хорошего в способе нет.
Приведенным способом мы урезаем встроенные разработчиками функции мониторинга ошибок.

Для Joomla 1.5 есть такое решение для создания собственной страницы 404:

    1. Создать материал, не указывая раздел и категорию.
    2. Создать ссылку через меню. После создание ссылки там же в ней посмотреть адрес статьи, например index.php?option=com_content&view=article&id=54
    3. В файле error.php, который находится в папке templates/system стереть всё содержимое и вместо этого написать:

        <?php
        defined('JPATH_BASE') or die();
        echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=54');
?>

А как это сделать на Joomla 1.7?
Для Joomla 1.5 есть такое решение для создания собственной страницы 404:

    1. Создать материал, не указывая раздел и категорию.
    2. Создать ссылку через меню. После создание ссылки там же в ней посмотреть адрес статьи, например index.php?option=com_content&view=article&id=54
    3. В файле error.php, который находится в папке templates/system стереть всё содержимое и вместо этого написать:

        <?php
        defined('JPATH_BASE') or die();
        echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=54');
?>

А как это сделать на Joomla 1.7?
Странно, здесь решение раньше опубликовано было.
Файл error.php не только за 404 ошибку отвечает (но и вывод других). Так получается ничего хорошего в способе нет.
Приведенным способом мы урезаем встроенные разработчиками функции мониторинга ошибок.
Ничего не урезаем, нет там функций, там только отображение страницы (ну, эта наша любимая красная...), то есть попросту ВИД.