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

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Настроил правильную отдачу кода ошибки страницы 404, по способу описанному здесь:
http://joomlaforum.ru/index.php/topic,219602.msg1151167.html#msg1151167

При проверке Ответа сервера в яндекc.вебмастере код 404 отдаётся только при первом обращении к странице 404. При повторном обращении к этой странице отдаётся код 200.
При сбросе кеша в админке ситуация исправляется, но опять 400 отдаётся только один раз. Что делать?
« Последнее редактирование: 22.01.2013, 14:22:02 от rdk »
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
а с чего она должна 404 постоянно отдавать, если это обычная страница - материал (или что там у вас)?
Efanych в данном случае - неправильно написал

« Последнее редактирование: 22.01.2013, 14:26:59 от ELLE »
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
а с чего она должна 404 постоянно отдавать, если это обычная страница - материал (или что там у вас)?
Efanych в данном случае - неправильно написал

Это страница с описанием ошибки 404, созданная как материал.
Почему тогда один раз код 404 всётаки отдаётся, после отчистки кеша? Может нужно как то запретить кеширование данной страницы?

Если это вариант реализации отдачи неверный, какай тогда лучше использовать?
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
Вы мне можете объяснить просто логически - почему эта страница должна отдавать код ответа 404, если она реально существует?

В моем понимании код ответа 404 должен быть отдан в случае, если документ не найдет по какому-либо адресу.

Что у вас отдает в случае site.ru/abrakadabra ?
*

Efanych

  • Глобальный модератор
  • 4687
  • 643 / 0
  • Меняю свою жизнь на 360°!
Цитировать
Вы мне можете объяснить просто логически - почему эта страница должна отдавать код ответа 404, если она реально существует?
Я могу.
Цитировать
<?php
$sv = $_SERVER['REQUEST_URI'];
if ($sv == '/урл_страницы_ошибки') {
header("HTTP/1.0 404 Not Found");
} ?>
Если нужный нам URL - отдавать ответ 404
Создание сайтов, шаблонов, помощь в решении проблем.
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
Efanych, я с кодом согласна. Яне согласна с тем, чтобы таким образом отдавать контентную страницу на ответ 404

Код
header("HTTP/1.1 301 Moved Permanently");
  header('Location: ' . $this->baseurl . '/vnesti-pozhelaniya/avtorizaciya/404.html');

мы делаем 301 редирект на ошибку 404 - это как?
*

Efanych

  • Глобальный модератор
  • 4687
  • 643 / 0
  • Меняю свою жизнь на 360°!
Ну, насчёт способа согласен. error.php использовать логичнее
Создание сайтов, шаблонов, помощь в решении проблем.
*

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Код: php-brief
<?php
defined('JPATH_BASE') or die();
if ($_SERVER['REQUEST_URI'] == '/урл_страницы_ошибки')
{
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
}
?>
Чуточку добавил  ^-^
Не могу понять зачем редирект делать
404 это статическая страница. Что проблема в файл вставить HTML код в файл
Ну наконец так можно
echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=1');
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
В общем обсудили что так неправильно. И снова толкаем ТС на те же грабли.

Я хочу сказать, что правильно, - это когда набрали любую /abrakadabry и по этому адресу получили 404, а не что-то иное.

Файл error.php и есть тот статичный материал (его шаблон), который будет показан при возникновении 404ой, его можно отверстать, добавить инфу и т.д. - оформить как пожелаете.

Как выше уже отметил Poznakomlus, можно не заморачиваться с оформление, а подтянуть контент с другой страницы.
Для этого в файл error.php можно добавить такой код

Код: php
<?php
if ($this->error->getCode() == '404') {
echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=1');
}
?>
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Суть в том чтобы подцеплять красиво оформленную, под стиль шаблона страницу 404, дабы не терять посетителй сайта.  И при этом чтобы роботы яндекса и Google получали ответ сервера 404, а не 200, по неверным ссылкам.

Заменил содержимое файла error.php на:
 
Код
<?php
if ($this->error->getCode() == '404') {
echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=46');
}
?>

Теперь на /abrakadabru ответ сервера верный - 404. Но при запросе /abrakadabra из броузера получаем "Ошибка. Ссылка не работает". Может есть ещё какойнибудь способ "подцепить" содержание другой страницы? Или в error.php нужно ещё что то прописать?
*

ELLE

  • Глобальный модератор
  • 4512
  • 883 / 0
а если со слэшем, так -
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=46');
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
а если со слэшем, так -
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=46');

тоже не работает, уже попробывал.
« Последнее редактирование: 22.01.2013, 18:46:55 от rdk »
*

Efanych

  • Глобальный модератор
  • 4687
  • 643 / 0
  • Меняю свою жизнь на 360°!
Не все компоненты в случае ошибки на error.php отправляют. Или URL не тот. Вместо index.php?option=com_content&view=article&id=46 вам нужно писать URL материала, который у вас под 404 ошибку косит.
Создание сайтов, шаблонов, помощь в решении проблем.
*

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Цитировать
тоже не работает, уже попробывал.
А если напишите так
Код: php-brief
<?php echo 'Здесь я ';?>
Не туда вставили значит
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Не все компоненты в случае ошибки на error.php отправляют. Или URL не тот. Вместо index.php?option=com_content&view=article&id=46 вам нужно писать URL материала, который у вас под 404 ошибку косит.

 index.php?option=com_content&view=article&id=46 этот материал и косит под 404 ошибку.
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
А если напишите так
Код: php-brief
<?php echo 'Здесь я ';?>
Не туда вставили значит

вместо 'я здесь' белый экран. А куда там в error.php можно ещё то вставить, файлик то на 2 строки:
Сейчас он выглядт так:
 
Код
<?php
if ($this->error->getCode() == '404') {
<?php echo 'Здесь я ';?>
}
?>
*

Fedor Vlasenko

  • Живу я здесь
  • 3819
  • 717 / 7
  • Все начинается с Value
Цитировать
файлик то на 2 строки:
Скопируйте из шаблона system тогда
Так неправильно
Цитировать
<?php
if ($this->error->getCode() == '404') {
   <?php echo 'Здесь я ';?>
}
?>
Весь код Неправильный и синтаксис
по синтаксису <?php
if ($this->error->getCode() == '404') {
echo 'Здесь я ';
}
?>
Скопируйте из шаблона system error.php
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
а если со слэшем, так -
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=46');

Разобрался, почему не работала эта функция. На хостинге в настройках PHP был выключен параметр allow_url_fopen (Работать с URL как с файлами), после включения всё заработало. Всем спасибо!   
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Разобрался, почему не работала эта функция. На хостинге в настройках PHP был выключен параметр allow_url_fopen (Работать с URL как с файлами), после включения всё заработало. Всем спасибо!   

После включения allow_url_fopen в параметрах PHP на хостинге, перестала работать админка сайта, т.е. захожу туда, первая страница админки открывается и висит, менюшки не активны. Если при этом убрать  из error.php
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=46');
админка работает нормально. Кэш чистил. В чём может быть дело?
*

rdk

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
После включения allow_url_fopen в параметрах PHP на хостинге, перестала работать админка сайта, т.е. захожу туда, первая страница админки открывается и висит, менюшки не активны. Если при этом убрать  из error.php
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=46');
админка работает нормально. Кэш чистил. В чём может быть дело?

Проблема была в компоненте экспорта/импорта CSV Implroved - решилось переустановкой компонента.

А подгрузку контента страницы 404 решил не через file_get_contents, а через cURL. Вроде как использование cURL безопаснее, но не уверен. 
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Для чего нужны пустые index.html в каждой папке?

Автор webusver

Ответов: 13
Просмотров: 7260
Последний ответ 12.11.2016, 18:23:42
от ProtectYourSite
Как сделать, чтобы внутренняя страница не показывалась в качестве главной?

Автор kpripper

Ответов: 21
Просмотров: 1221
Последний ответ 19.03.2016, 16:51:11
от flyingspook
Не отображаются страница материалов

Автор MOZ

Ответов: 8
Просмотров: 765
Последний ответ 28.02.2016, 19:50:37
от effrit
Joomla 1.5.26 карта-сайта не отдает Content-Encoding: gzip

Автор lotosss

Ответов: 1
Просмотров: 545
Последний ответ 09.07.2015, 15:30:06
от lotosss
Сайт на Joomla 1.5, не открываются страницы, только главная

Автор miller_king

Ответов: 2
Просмотров: 850
Последний ответ 18.05.2015, 16:50:50
от darkghost