Форум русской поддержки Joomla!® CMS
03.12.2016, 15:39:21 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2 3 4 5 6   Вниз
  Добавить закладку  |  Печать  
Автор

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

 (Прочитано 72273 раз)
0 Пользователей и 1 Гость смотрят эту тему.
lolitma
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 22


« : 15.09.2011, 15:01:05 »

Для 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?
« Последнее редактирование: 29.08.2013, 10:15:27 от b2z » Записан
 
alp
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 11


« Ответ #1 : 24.10.2011, 11:37:50 »

Если взять за основу способ для J1.5-http://joomlaforum.ru/index.php/topic,113927.0.html
 можно сделать так:

1. Создаем материал с текстом об ошибке.
2. Создаем меню с ссылкой на этот материал. Например 404.html. Запоминаем эту ссылку. Если используется SEF, то запоминаем SEF-ссылку. Модуль этого меню просто не публикуем, удалять не надо. Меню создается для красоты урла, чтобы не было всяких index.php?bla-bla-bla...
3. Из папки templates/system копируем файл error.php в папку templates/Название_Вашего_шаблона.
4. В файле templates/Название_Вашего_шаблона/templateDetails.xml вписываем перечисление файла error.php. в разделе <files><filename>error.php</filename></files>.
5. Заменяем содержимое нашего файла error.php на следующее:
Код:
<!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: error404');
exit;
}
?>
</body>
</html>
header('Location: 404.html'); - здесь вместо "404.html" пишете адрес своей страницы ошибок, тот который запомнили из меню.
« Последнее редактирование: 24.10.2011, 11:43:57 от alp » Записан
NightGuard
Практически профи
*******

Репутация: +378/-7
Offline Offline

Пол: Мужской
Сообщений: 3035


вжжж-вжжж


« Ответ #2 : 24.10.2011, 11:40:45 »

А кто мешает сделать 404 на основе того же error.php? Копируете в свой шаблон и все отлично. И любой дизайн и что угодно.
Записан
lolitma
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Сообщений: 22


« Ответ #3 : 05.11.2011, 23:56:55 »

Сделала как Вы посоветовали:

"Если взять за основу способ для J1.5-http://joomlaforum.ru/index.php/topic,113927.0.html
 можно сделать так:

1. Создаем материал с текстом об ошибке.
2. Создаем меню с..."

Всё получилось. Большое спасибо за помощь.
Записан
abbyevg
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Пол: Мужской
Сообщений: 80


эвилпанда


« Ответ #4 : 06.11.2011, 01:48:14 »

Предупреждаю, пойдет большая нагрузка на сервер.
Записан
ArSi
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #5 : 07.11.2011, 14:07:01 »

Народ, подскажите как приладить переадресацию на главную при ошибке 404 на J1.7.
На J1.5 у меня error.php содержит следующее:

Цитировать
<?php

defined( '_JEXEC' ) or die( 'Restricted index access' );

if (($this->error->code) == '404')

{

header("HTTP/1.0 404 Not Found");

header('Location: ' . $this->baseurl . '/');

exit;

}

?>

При этом все замечательно работало и при запросе к несуществующей странице, автоматом прекидывало на главную. В 1.7 это не работает, в чем дело? Что изменить в коде, чтоб наладить этот механизм под 1.7? Знатоки, оптимизируйте, пожалуйста, под 1.7.
Записан
AlexSF
Завсегдатай
*****

Репутация: +68/-0
Offline Offline

Пол: Мужской
Сообщений: 678


В споре истина рождается


« Ответ #6 : 09.11.2011, 16:21:29 »

Если взять за основу способ для J1.5-http://joomlaforum.ru/index.php/topic,113927.0.html
 можно сделать так:

1. Создаем материал с текстом об ошибке.
2. Создаем меню с ссылкой на этот материал. Например 404.html. Запоминаем эту ссылку. Если используется SEF, то запоминаем SEF-ссылку. Модуль этого меню просто не публикуем, удалять не надо. Меню создается для красоты урла, чтобы не было всяких index.php?bla-bla-bla...
3. Из папки templates/system копируем файл error.php в папку templates/Название_Вашего_шаблона.
4. В файле templates/Название_Вашего_шаблона/templateDetails.xml вписываем перечисление файла error.php. в разделе <files><filename>error.php</filename></files>.
5. Заменяем содержимое нашего файла error.php на следующее:
Код:
<!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: error404');
exit;
}
?>
</body>
</html>
header('Location: 404.html'); - здесь вместо "404.html" пишете адрес своей страницы ошибок, тот который запомнили из меню.

сделал по этому методу, но результатом не совсем доволен:
Показать текстовый блок

А хотелось бы получить ответ HTTP/1.0 404 Not Found. как можно добиться правильного ответа сервера?
« Последнее редактирование: 09.11.2011, 16:32:22 от AlexSF » Записан
ArSi
Новичок
*

Репутация: +0/-0
Offline Offline

Сообщений: 6


« Ответ #7 : 11.11.2011, 16:20:53 »

frisian спасибо большое Azn По-моему, это самое оптимальное решение - попадать на главную, вместо состряпанной статьи 404. Конечно, если не участвуешь в конкурсе "Самая красивая страница 404".
Записан
mark1
Давно я тут
****

Репутация: +38/-2
Offline Offline

Сообщений: 385



« Ответ #8 : 20.11.2011, 22:52:32 »

А хотелось бы получить ответ HTTP/1.0 404 Not Found. как можно добиться правильного ответа сервера?
А есть одна догадка... Там в рецепте сначала создается модуль, потом он СОХРАНЯЕТСЯ, но НЕ публикуется. Запоминаем ссылочку , и бла-бла бла. Так вот: имхо, Joomla и интерпретирует это 302/как moved temporarily.
А если сделать по совету NighGuard, я подозреваю, что будет желанный код 404 =)
Записан
kurandin
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 161



« Ответ #9 : 02.12.2011, 17:57:10 »

$code = $this->error->getCode();
$app = & JFactory::getApplication();
if ( $code == 404 ) {
   $app->redirect($this->baseurl);
}

Поясните, куда это вставить?
Записан
fbr
Живу я здесь
******

Репутация: +136/-6
Offline Offline

Сообщений: 1250


« Ответ #10 : 02.12.2011, 19:26:37 »

мне понравился вариант у NetCat - 404 перенаправлять на карту сайта

Я у себя сделал, как предлагалось здесь http://joomlaforum.ru/index.php/topic,113927.0.html
и вставил адрес карты сайта

Записан
abbyevg
Осваиваюсь на форуме
***

Репутация: +6/-0
Offline Offline

Пол: Мужской
Сообщений: 80


эвилпанда


« Ответ #11 : 30.12.2011, 09:49:01 »

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

Резюмирую, страница с 404 ошибкой должна быть статической(!) либо ОЧЕНЬ простой и с минимальным набором графики.
Записан
tops974
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 73



« Ответ #12 : 30.12.2011, 14:01:07 »

Также можно воспользоваться встроенным компонентом "Перенаправление" и направить станицу 404 на любую нужную вам страницу.
Посетитель доволен, А вот только не знаю, как в этом случае с нагрузкой.
Записан
newalex
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 66



« Ответ #13 : 30.12.2011, 14:17:36 »

Использование "перенаправления" - создает дополнительную нагрузку на базу данных. Т.к. в этом случае он будет "собирать" обрашения от поисковиков и др. и акумулировать все это в базе данных. База при этом наполнится и раздуется. Поэтом использование error.php более правильно!
Записан
tops974
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 73



« Ответ #14 : 03.01.2012, 14:59:54 »

Создал пустой файлик error.php, внутри вставил
$code = $this->error->getCode();
$app = & JFactory::getApplication();
if ( $code == 404 ) {
   $app->redirect($this->baseurl);
}
закинул его в корень шаблона. Перехожу на страницу с 404 ошибкой и на белом фоне строка: $code = $this->error->getCode(); $app = & JFactory::getApplication(); if ( $code == 404 ) { $app->redirect($this->baseurl); }
Что я делаю не так? подскажите пожалуйста.
Записан
tops974
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 73



« Ответ #15 : 03.01.2012, 16:08:23 »

Почистил кэш, стало работать, но как-то неправильно.
Допустим у меня была категория которой сейчас нет, то-есть ошибка 404. Выглядит это так, вставляю урл в браузер Хром  site.ru/film/melodrama/ и в ответ вижу это:   На этой странице обнаружена циклическая переадресация
Веб-страница  site.ru/film/melodrama/ привела к избыточному количеству переадресаций. Чтобы устранить эту проблему, можно удалить файлы cookie для этого сайта или разрешить файлы cookie независимых поставщиков. Если проблема сохранится, возможно, она связана с конфигурацией сервера, а не с вашим компьютером.
Также в мозилле   Неверное перенаправление на странице Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится.
Подскажите пожалуйста где у меня может быть ошибка?

Записан
newalex
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 66



« Ответ #16 : 03.01.2012, 16:24:06 »

такая ошибка с "циклическим".. обычно (если все исправно) возникает если ссылка существует, а станицы или содержания нет.
Записан
strannik-yura
Завсегдатай
*****

Репутация: +44/-1
Offline Offline

Пол: Мужской
Сообщений: 514


:)


« Ответ #17 : 03.01.2012, 16:28:49 »

мне почему-то кажется, что перенаправленные идёт на не существующий страницу, из-за чего Joomla перекидывает на 404-ю а та в свою очередь на .....
PS могу ошибатся
Записан
newalex
Осваиваюсь на форуме
***

Репутация: +4/-0
Offline Offline

Сообщений: 66



« Ответ #18 : 03.01.2012, 16:31:15 »

кстати  "перенаправления" надо отключить!
Записан
Abiladenda
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Сообщений: 187



« Ответ #19 : 05.01.2012, 23:22:08 »

Но все же как будет правильно, делать 404 страницу и запихивать через файл php шаблона, или отказаться от нее вообще, и сделать так что бы загружалась главная.
Я спрашиваю потому как в последней версии zoo 2.5.6, вообще убрали 404, тоесть если сайт только на zoo, без вмешательсва в код, при любом наборе неправильной ссылки перекидывает на главную, интересно почему команда yootheme сделала так, или это глюк в самом zoo, или на моем сайте.
Записан
biosila
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 74


« Ответ #20 : 13.01.2012, 11:09:37 »

Весе ли верно  сделал?:
В файле templates\...\error.php заменил  код на тот что templates\...\index.php
Удалил лишнее( модуль комментариев ) и вставил текст.
Теперь при неверном адресе, у меня как и положено открывает страница в стиле шаблона сайта, с тем тестом что я добавил.
Просто боюсь, что я что то упустил, и у меня каждая такая страница будет считаться дублем.
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #21 : 13.01.2012, 12:47:49 »

Весе ли верно  сделал?:
В файле templates\...\error.php заменил  код на тот что templates\...\index.php
Правильное решение. Теперь получаете ответ сервера 404.
Записан
stasyansky
Давно я тут
****

Репутация: +22/-0
Offline Offline

Сообщений: 228


« Ответ #22 : 15.01.2012, 16:14:10 »

подскажите, что не так...

перевел сервак с виндовс на убунту.
PHP 5.3.6
собственно на первом страница ошибки отображалась без проблем.
сейчас же просто отображается пустая страница.

в логах сервера обнаружил...

Цитировать
PHP Warning:  file_get_contents(): php_network_getaddresses: getaddrinfo failed: Name or service not known in /***/templates/default/error.php on line 4
PHP Warning:  file_get_contents(http://***/error404.html): failed to open stream: php_network_getaddresses: getaddrinfo failed: Name or service not known in /***/templates/default/error.php on line 4

в директории шаблона присутствует error.php с содержимым

Цитировать
<?php

defined('JPATH_BASE') or die();
echo file_get_contents(JURI::root().'error404.html');

?>

« Последнее редактирование: 15.01.2012, 16:51:24 от stasyansky » Записан
tops974
Осваиваюсь на форуме
***

Репутация: +5/-0
Offline Offline

Пол: Мужской
Сообщений: 73



« Ответ #23 : 20.01.2012, 12:23:27 »

Сделал все как прописано у alp
Цитировать
Если взять за основу способ для J1.5-http://joomlaforum.ru/index.php/topic,113927.0.html
 можно сделать так:

1. Создаем материал с текстом об ошибке.
2. Создаем меню с ссылкой на этот материал. Например......
Иду в Яндекс в "Страницы с ошибкой" и перехожу по ссылке. Открывается моя страница с ошибкой: site.ru/component/content/article/2-uncategorised/1054-error-404.html
Перехожу по другой ссылке, вот: /film/adventure/181-largo-winch-2  и попадаю также на страницу с ошибкой, но уже прилепленной к ней всеми модулями и т.д, а в адресной строке наблюдаю такой адрес: site.ru/film/adventure/component/content/article/2-uncategorised/1054-error-404.html
Компонент "Перенаправление" отключен, категорий с фильмами давно нет.
Подскажите пожалуйста в чем дело. Если для наглядности понадобиться, я дам реальные ссылки.
Записан
danik.html
Практически профи
*******

Репутация: +351/-4
Offline Offline

Пол: Мужской
Сообщений: 2723



« Ответ #24 : 03.02.2012, 16:22:59 »

В error.php не обрабатываются вставки <jdoc:include /> - это все портит. Выходит нужно либо редиректить на существующую страницу нормальную, с текстом 404 - ошибка и тд. И при этом отдавать код 404 Not Found - это вообще реально сделать? пытаюсь установить во время редиректа свои заголовки - он устанавливает любые(301 например) кроме нужного 404 - как победить?
Хочется нормальной страницы 404 со всеми модулями и тд.
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #25 : 03.02.2012, 16:34:43 »

Цитировать
не обрабатываются вставки <jdoc:include />
Генерируйте код и вставляете в файл error.php
Записан
avilin
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 17


« Ответ #26 : 24.02.2012, 09:53:35 »

Озаботился проблемой 404 после включения ЧПУ. Т.к. поисковики стали отправлять на старые адреса страниц, траф упал в 4 раза.

Сделал все по этой инструкции:
http://webmastermix.ru/lessons-joomla/134-stranitsa-oshibki-404-v-joomla.html

За исключением одного: после кода "<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">" вставил новый код удалив только следующую строчку файла error.php. В инструкции же написано, что удалять надо ВСЕ, что находится ниже данной строки.

В итоге получилась ошибка 404 на которой отображается главная страница сайта, а текст ошибки появляется в подвале:
http://www.ros-door.ru/blablabla

Меня это устраивает, а вопрос в том, какие минусы могут быть у такого метода?



Записан
noname-dev
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 285



« Ответ #27 : 24.02.2012, 10:33:31 »

Народ, подскажите как приладить переадресацию на главную при ошибке 404 на J1.7.
На J1.5 у меня error.php содержит следующее:

При этом все замечательно работало и при запросе к несуществующей странице, автоматом прекидывало на главную. В 1.7 это не работает, в чем дело? Что изменить в коде, чтоб наладить этот механизм под 1.7? Знатоки, оптимизируйте, пожалуйста, под 1.7.
Знатоки никогда такого не делают, а именно редирект с 404 на главную, это очень и очень плохо.
Записан
NightGuard
Практически профи
*******

Репутация: +378/-7
Offline Offline

Пол: Мужской
Сообщений: 3035


вжжж-вжжж


« Ответ #28 : 31.03.2012, 12:56:18 »

В error.php не обрабатываются вставки <jdoc:include /> - это все портит. Выходит нужно либо редиректить на существующую страницу нормальную, с текстом 404 - ошибка и тд. И при этом отдавать код 404 Not Found - это вообще реально сделать? пытаюсь установить во время редиректа свои заголовки - он устанавливает любые(301 например) кроме нужного 404 - как победить?
Хочется нормальной страницы 404 со всеми модулями и тд.
Да, <jdoc:include /> не обрабатывается, но модули вызывать можно.
Записан
lubitel3
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Сообщений: 23


« Ответ #29 : 18.04.2012, 15:15:45 »

Воспользовался советом 3-го поста (NightGuard).
Всё просто отлично и не надо городить огород, ведь есть готовые решения, просто нужно подправить под себя и будет вам счастье...
Записан
Страниц: [1] 2 3 4 5 6   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet