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

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Сайт настроен на использование страницы с ошибкой 404 из материлов, т.к хотелось 404 в стиле сайта.При этом сервер выдает 301, вместо 404.Если использовать стандартный error.php, то ответ сервера получается правильным 404, но при этом не знаю как привести страницу 404 в вид шаблона.
Просьба помочь настроить ответ 404 или подскажите как изменить 404 из бесплатного шаблона "под себя" .
Сайт squidink.ru

<?php

/*--------------------------------------------------------------
# Copyright (C) joomla-monster.com
# License: http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
# Website: http://www.joomla-monster.com
# Support: info@joomla-monster.com
---------------------------------------------------------------*/

/**
 * @package     Joomla.Site
 * @subpackage  Template.system
 *
 * @copyright   Copyright (C) 2005 - 2012 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;

/////////////////////////////////////////////////////
// ARTICLE ID
$errorpage = 131;
/////////////////////////////////////////////////////

//get error code
$errorcode = $this->error->getCode();


if($errorcode=='404') {
 
  //get a db connection.
  $db = JFactory::getDbo();
   
  //create a new query object.
  $query = $db->getQuery(true);
   
  //select all records from the user profile table where key begins with "custom.".
  //order it by the ordering field.
  $query->select($db->quoteName(array('id')));
  $query->from($db->quoteName('#__content'));
  $query->where($db->quoteName('id'). ' = '. $db->quote($errorpage));
   
  //reset the query using our newly populated query object.
  $db->setQuery($query);
   
  //load the results
  $results = $db->loadResult();
 
  require_once(JPATH_BASE.'/components/com_content/helpers/route.php');
  if($results) {
    if ($errorcode == '404') {
      header('HTTP/1.1 301 Moved Permanently');
      header('Location: '.JRoute::_(ContentHelperRoute::getArticleRoute($errorpage), false));
      header('Connection: close');
      exit;
    }
 
  }
}

?>
<!DOCTYPE html>
<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>
   <title><?php echo $this->error->getCode(); ?> - <?php echo $this->title; ?></title>
   <link rel="stylesheet" href="<?php echo JURI::base(); ?>templates/<?php echo $this->template; ?>/css/error.css" type="text/css" />
</head>
<body>
   <div class="jm-error">
      <div class="jm-error-title">
         <div class="jm-error-code">
            <h1><?php echo $this->error->getCode(); ?></h1>
         </div>
         <div class="jm-error-message">
            <h2><?php echo $this->error->getMessage(); ?></h2>
         </div>
      </div>
      <div class="jm-error-desc">
         <?php echo JText::_('TPL_JMTEMPLATE_JERROR_PAGE_DOESNT_EXIST'); ?><br/>
         <?php echo JText::_('TPL_JMTEMPLATE_JERROR_GO_BACK_OR_HEAD_OVER'); ?><br />
         <div class="jm-error-buttons">
            <a class="jm-error-left" href="javascript:history.go(-1)"><?php echo JText::_('TPL_JMTEMPLATE_JERROR_BACK'); ?></a> <a class="jm-error-right" href="<?php echo JURI::base(); ?>" title="<?php echo JText::_('TPL_JMTEMPLATE_JERROR_HOME_PAGE'); ?>"><?php echo JText::_('TPL_JMTEMPLATE_JERROR_HOME_PAGE'); ?></a>
         </div>
      </div>
   </div>   
</body>
</html>
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Сервер выдает 301, вместо 404
« Ответ #1 : 16.08.2018, 18:00:13 »
Вот всё что вы понаписали - бред сумасшедшего. Руки бы отбить тому, кто этот бред опубликовал первым, а все потом раскопировали! Даже, блин, на Joomla.org эта дибильная инструкция выложена  *ОХ-Х-Х*

В error.php вставте это
Код
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

if ($this->error->getCode() == '404') {
  echo file_get_contents(JURI::root().'/404');
}
?>
Свой материал для 404 опубликуйте в скрытом пункте меню, с алиасом 404 и будет вам счастье и красивая страница ошибки
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #2 : 16.08.2018, 18:45:40 »
вешает все мои домены как только обращаюсь к несуществующей странице
если вернуть старый error.php,то все ок
« Последнее редактирование: 16.08.2018, 18:51:08 от astinasty »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Сервер выдает 301, вместо 404
« Ответ #3 : 16.08.2018, 19:09:43 »
Пункт меню создан на материал 404 ?
*

Messir

  • Давно я тут
  • 532
  • 73 / 0
  • могу укусить:)
Re: Сервер выдает 301, вместо 404
« Ответ #4 : 16.08.2018, 19:34:59 »
Код
defined('_JEXEC') or die;

if (($this->error->getCode()) == '404') {
header("HTTP/1.0 404 Not Found");
echo file_get_contents(JURI::root().'404');
exit;
}
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #5 : 16.08.2018, 20:05:46 »
Пункт меню создан на материал 404 ?
да, скрытый пункт меню
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #6 : 16.08.2018, 20:06:18 »
Код
defined('_JEXEC') or die;

if (($this->error->getCode()) == '404') {
header("HTTP/1.0 404 Not Found");
echo file_get_contents(JURI::root().'404');
exit;
}

с вашим выдает : Error: syntax error, unexpected 'echo' (T_ECHO): Категория не найдена
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #7 : 16.08.2018, 20:40:31 »
phpinfo allow_url_open какое значение?
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #8 : 16.08.2018, 21:12:01 »
Directive   Local Value   Master Value
allow_url_fopen   On   On
*

Messir

  • Давно я тут
  • 532
  • 73 / 0
  • могу укусить:)
Re: Сервер выдает 301, вместо 404
« Ответ #9 : 17.08.2018, 08:21:38 »
материал 404 просто открывать пробовали? Какой к нему путь в адресной строке? Страница должна открываться по адресу http://vash_sait/404, тогда все будет работать...
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #10 : 17.08.2018, 11:29:27 »
Во-первых, всем СПАСИБО!! :D :D :D :D
Вроде, заработало!Буду еще гонять.Причиной висяка была плагин JL No Doubles.Или буду думать как настроить или удалю и снова руками удалять дубли через robots.txt


*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #11 : 17.08.2018, 11:34:53 »

В error.php вставте это
Код
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

if ($this->error->getCode() == '404') {
  echo file_get_contents(JURI::root().'/404');
}
?>
все заработало, причиной был плагин JL No Doubles и лишний "/" похоже
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #12 : 17.08.2018, 12:24:35 »
МОжно попробовать, чтобы плагин работал использовать такой вариант:
Код
echo file_get_contents(JURI::root().'/index.php?option=com_content&view=article&id=12');
где вместо 12 подставить своё ид статьи.
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #13 : 17.08.2018, 14:03:34 »
Ни с того ни с сего перестало работать ! ! ! !
сервер отдает 404, но отражается страница вида �}:�<~1|P������i�x�p������������'V�3���� �~����/ ���_ď� }�>n���H�(6~1� *_ď|}��A���*��ǥ+�w�n�W��Z�)���ڶ{0����[^h�N�Y����ŏ@ЇP���1~��_���Qa�7h�8�ă}�1�7� z?~   H^���y���|����g�(�������ٸp;�>]?'��On]V���b;��ͺ,��m�Q� w\�2x2Jr(�=�o:|)����� �5�#gK�|G��SX��n/�&N   Ɓ0-^��P �F���m�>XYj6Z�h�|e}mi�����͕u�%���kk   �-��aB��+`(!gp�/���#�=+̞j+ƚ��+kH�U0���C�w�@��(xF��.�r�sOo_<��M�6� t��W�[�5�w\w�ܳ�p��?��em���4�e�� �mՕ�i��ӷ6����W�j����@8�+J�������$R��X��X�+cv����}�c�0� �W��F��_5�Vm��=7���@�FȎM+�G�Fl ��c9�f�;��   �i�� �h=���Lt����a �l��W�b�/��~��Q�n� �_R/�Jƚ� ]d���3677�.�0���n�'���L��Y�v2��AZhQԺ�k�Q��9��I� ���6���Rg�w��l��-m�u6�I��KsX�q�mkF���������K�h�ͮ�j se����l��5�gtE���U5�Ju���@��L��j0B§���h�X |c��͹���A �-}w����]��%zm{f�o�R*��-���� �ڍ,���i$�#�:o�X�qa��o���������ꑥ���m�DZ�k�Až�R��|?aE�W�Î �N�d�@����Law��1;dׯ����2ٳ���j\u�{#�楻�1��=X8�j`����_ �rb���(�u�����Fw�5kЖ �� ^   ��'殜��  _��y�v��Vz�c�UUރ���n9���c���������H-ph�@���i.YXԡ +�U�h���D�-@���~ïXB���Mly�v��X� ��3c LE��/�W��M��t>g�#���*�g��ݼr��q�0-X���t���� n�X�1���)�|E%mB nc���,X ����{�}ҽ�K(�K9��A�fJY������j6����{?A��3l�b�u2W��BS�X%W�H$�.0�c��a����l�t�s�N�3
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #14 : 17.08.2018, 14:19:55 »
Кодировка или сжатие нарушено
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #15 : 17.08.2018, 14:33:08 »
захожу с нового компа - каракули, проходит время - норм
я в замешательстве
у вас как открывается, скажем http://www.squidink.ru/affsaggd ?
*

astinasty

  • Захожу иногда
  • 68
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #16 : 18.08.2018, 20:49:38 »
есть подозрение, что это была проблема хостинга
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Сервер выдает 301, вместо 404
« Ответ #17 : 18.08.2018, 20:54:00 »
у вас как открывается, скажем http://www.squidink.ru/affsaggd ?
у меня вот так http://prntscr.com/kk6wsq
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

alexklub

  • Новичок
  • 6
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #18 : 08.02.2024, 20:34:55 »
здравствуйте, подскажите пожалуйста новичку в джумале вообще, сейчас столкнулся в первый раз, все изучил, но не пойму в чем ошибка имею уже сайт https://avtopro99.ru/, есть там страница с ошибкой и она открывается при неверном вводе какой нибудь страницы, но с кодом 301, файл error
<?php
/**
 * @package      Joomla.Site
 * @copyright   Copyright (C) 2005 - 2012 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;
}
// Detect if 404 Error Page is present
/*$db = JFactory::getDBO();
$db->setQuery('SELECT id,state FROM #__content WHERE title = "404 Error Page"');
$article = $db->loadObject();
if(!empty($article->id) && $article->state == 1)
{
   $app = JFactory::getApplication();
   $app->redirect('index.php?option=com_content&view=article&id='.$article->id);
}*/

if ($this->error->getCode() == '404')
{
   $app = JFactory::getApplication();
   $app->redirect('/oshibka-404');
   exit();
}

//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; ?>">
<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" type="text/css" />
   <?php if ($this->direction == 'rtl') : ?>
   <link rel="stylesheet" href="<?php echo $this->baseurl; ?>/templates/system/css/error_rtl.css" type="text/css" />
   <?php endif; ?>
</head>
<body>
   <div class="error">
      <div id="outline">
      <div id="errorboxoutline">
         <div id="errorboxheader"><?php echo $this->error->getCode(); ?> - <?php echo $this->error->getMessage(); ?></div>
         <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>
         </div>
      </div>
      </div>
   </div>
</body>
</html>
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #19 : 08.02.2024, 22:35:22 »
Ну так ваш код делает redirect на страницу 404, уберите редирект и отдавайте 404 код
*

alexklub

  • Новичок
  • 6
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #20 : 08.02.2024, 22:38:24 »
подскажите что нужно изменить в коде для этого
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #21 : 08.02.2024, 23:23:11 »
Попробуйте заменить
Код
$app = JFactory::getApplication();
   $app->redirect('/oshibka-404');
   exit();
На
Код
header("HTTP/1.0 404 Not Found");
echo file_get_contents(JURI::root().'oshibka-404');
exit;
*

alexklub

  • Новичок
  • 6
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #22 : 09.02.2024, 09:44:09 »
вставил, изменился внешний вид, но Яндекс все равно выдает 301, например https://avtopro99.ru/88
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #23 : 09.02.2024, 12:18:37 »
Это уже проблема вашего htaccess с редиректом на .html
*

alexklub

  • Новичок
  • 6
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #24 : 11.02.2024, 20:28:38 »
подскажите что нужно убрать или исправить?
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #25 : 11.02.2024, 20:55:08 »
Поищите в .htaccess файле редиректы на HTML
*

alexklub

  • Новичок
  • 6
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #26 : 12.02.2024, 19:35:03 »
https://avtopro99.ru/robots123.txt вот здесь - я там нашел 64 строчку - правильно ли это или еще что удалить, и еще подскажите там же сейчас дальше смотрю в этом же файле убраны Rel canonical, как их мнекорректно включить?
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #27 : 12.02.2024, 20:50:27 »
Весь блок

Код
#Redirect to .html alias
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/component/chronoforms5/
RewriteCond %{REQUEST_URI} !^/component/search/
RewriteCond %{REQUEST_URI} !^/poisk-po-sajtu
RewriteRule ^([^.]+)$ /$1.html [R=301,L]


*

alexklub

  • Новичок
  • 6
  • 0 / 0
Re: Сервер выдает 301, вместо 404
« Ответ #28 : 01.03.2024, 19:02:53 »
убрал, здесь все решилось, но всплыла ошибка дублей страниц без .htm с .htm, например /uslugi/antigravijnaya-zashchita.html   /uslugi/antigravijnaya-zashchita, в настройках сайта задана Добавлять суффикс к URL, если отключаю то с .html переходит на ошибку 404, это правильно, но по всему сайту куча ссылок на на эти страницы которые с .html, как можно исправить ?
*

ProtectYourSite

  • Живу я здесь
  • 2358
  • 135 / 4
  • Безопасность вебсайтов
Re: Сервер выдает 301, вместо 404
« Ответ #29 : 01.03.2024, 21:01:48 »
Это вам уже решать, как поступать
1) забить, после редиректа в принципе есть 404
2) сделать вручную редирект всех страниц, чтобы не было лишних редиректов
3) отказаться от редиректа ( это если у вас нету вечных ссылок, которые нельзя поменять)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Пустой экран вместо шаблона

Автор kalinova

Ответов: 2
Просмотров: 860
Последний ответ 09.12.2021, 10:06:37
от draff
Ошибка установки на сервер сайта (не удалось найти Z:\home\localhost\www\joomla\

Автор Katy_motya

Ответов: 7
Просмотров: 939
Последний ответ 23.04.2021, 21:17:16
от Katy_motya
Установка Joomla 3.9.23 выдает уведомление jinvalid_token_notice

Автор gir3000

Ответов: 12
Просмотров: 1637
Последний ответ 20.12.2020, 18:27:44
от gartes
Joomla выдает Error после переноса

Автор nightbodom

Ответов: 3
Просмотров: 784
Последний ответ 05.08.2020, 17:31:04
от nightbodom
Ошибка названия при открытии Joomla через локальный сервер

Автор Treant

Ответов: 7
Просмотров: 968
Последний ответ 27.04.2020, 15:00:27
от SeBun