Новости Joomla

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

catsub

  • Захожу иногда
  • 74
  • 0 / 0
Здравствуйте! Помогите пожалуйста!
Установлены Joomla 4.4.2, shaper_helixultimate 2.0.13.

Не существующие страницы возвращают код 404 Not Found только в том случае, если адрес имеет расширение .php. Во всех остальных случаях возвращается код 200 OK и идет перенаправление на главную страницу сайта, например:
https://www.aet-group.ru/prod/pokrytieppp.html   код 200 OK
https://www.aet-group.ru/prod/pokrytieppp.php   код 404 Not Found
https://www.aet-group.ru/pokrytieppp   код 200 OK
https://www.aet-group.ru/prod/   код 200 OK

Если перед несуществующим файлом указан существующий раздел, то перенаправление идет не на главную страницу, а на этот раздел, то есть на уровень выше, например:
https://www.aet-group.ru/production/jhkll

Почему это происходит, как исправить?
Спасибо.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Вероятно, так роутер вашего компонента настроен. Он парсит ссылку пока может. А на остальное не обращает внимание (на нераспарсенный хвост ссылки).
Исправить можно в парсере роутера, добавив генерацию 404 ошибки, в случае, если остались недопарсенные секции ссылки.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
sivers, спасибо! Только я не очень понимаю, что такое парсер роутера. Можно поподробнее, что конкретно нужно сделать?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
в папке компонента открыть файл router.php и посмотреть что там
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов
В шаблоне нужно править файл error.php убирать перенаправление и отдавать 404 код ответа
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
sivers, поиском нашлось 15 файлов router.php. О каком компоненте речь?

ProtectYourSite, исходный 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 отдают не только адреса с расширением .php, но также и .txt, .img, .htm (но не .html).
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
sivers, поиском нашлось 15 файлов router.php. О каком компоненте речь?
Который выводит товары у вас. Не может причина и не в роутере, но проверить стоит.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
sivers, если товары - то это com_hikashop. Я совершенно не разбираюсь в коде router.php . Помогите пожалуйста.
« Последнее редактирование: 22.01.2024, 22:23:17 от catsub »
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
Вдогонку - там не только hikashop неправильно работает, там и sp page builder, и вывод простого материала - все работает неправильно. Если не в роутере, то в чем еще может быть причина?
Старая версия сайта, на joomla 3, коды ответа сервера возвращала правильные.
« Последнее редактирование: 22.01.2024, 22:25:20 от catsub »
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
В верхней части файла подправьте метод parse
Код
      public function parse(&$segments) {
         $vars = _HikashopParseRoute($segments);

         // Проверка валидности ссылки
         $validLink = Route::_('index.php?'.http_build_query($vars));
         $validLink = explode('?', $validLink)[0];
         $parseLink = explode('?', $_SERVER['REQUEST_URI'])[0];
         if($parseLink != $validLink){
             throw new \Exception('Not Found', 404);
         }
         
         return $vars;
      }

Сверху после defined('_JEXEC') or die('Restricted access'); добавьте строку
Код
use Joomla\CMS\Router\Route;

Проверьте ссылки. Если не поможет или что-то сломается - верните как было.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Вдогонку - там не только hikashop неправильно работает, там и sp page builder, и вывод простого материала - все работает неправильно. Если не в роутере, то в чем еще может быть причина?
Старая версия сайта, на Joomla 3, коды ответа сервера возвращала правильные.
Тогда скорее всего причина не в роутере.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов

ProtectYourSite, исходный 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;
}

Попробуйте в этом файле вывести произвольный текст( это лучше тестить без кеширования). Если текст выведется, то надо проверять условия и от этого подгонять, иначе все таки дело в роутере выходит
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
sivers, сделала, как Вы сказали, проверила - без результата, вот начало файла:

<?php
/**
 * @package   HikaShop for Joomla!
 * @version   4.7.5
 * @author   hikashop.com
 * @copyright   (C) 2010-2023 HIKARI SOFTWARE. All rights reserved.
 * @license   GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
use Joomla\CMS\Router\Route;
?><?php

$jversion = preg_replace('#[^0-9\.]#i','',JVERSION);
if(version_compare($jversion,'4.0.0','>=')) {
   class hikashopRouter extends Joomla\CMS\Component\Router\RouterBase {

      public function build(&$query) {
         return _HikashopBuildRoute($query);
      }

      public function parse(&$segments) {
         $vars = _HikashopParseRoute($segments);

         // Проверка валидности ссылки
         $validLink = Route::_('index.php?'.http_build_query($vars));
         $validLink = explode('?', $validLink)[0];
         $parseLink = explode('?', $_SERVER['REQUEST_URI'])[0];
         if($parseLink != $validLink){
             throw new \Exception('Not Found', 404);
         }
         
         return $vars;
      }

   }
}

ProtectYourSite, вставила текст, он выводится, когда чтраница возвращает код 404. Но проблема-то в том, что несуществующие страницы возвращают код 200, в этих случаях обращения к error.php нет.
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Значит не в роутере дело.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
День добрый! Совсем больше никаких мыслей? :o
А Вы можете рассказать, в каком месте, в каком файле формируется перенаправление несуществующей страницы на главную?
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
начните проверять с .htaccess
переименуйте и поставьте дефолтный.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
sivers, сделала. Ничего не изменилось. Пробовала также поменять на .htaccess от старой версии сайта, в которой коды ответа формируются правильно - тоже ничего не поменялось.
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
Alex_gs, Ваша ссылка рассказывает про создание страницы 404. Но моя проблема в другом - несуществующие страницы возвращают код 200, а не 404. То есть обращения к странице 404 не происходит вообще. К тому же моя страница 404 уже создана именно по этой методике.
*

ProtectYourSite

  • Живу я здесь
  • 2356
  • 135 / 4
  • Безопасность вебсайтов
Ну как говорил выше, значит проблема в роутере, необходимо понимать, какой компонент так обрабатывает и в нем искать решение.
Есть еще небольшая гипотеза, что проблема в шаблоне и его плагинах, попробуйте воспроизвести проблему на стандартном шаблоне (желательно взять чистую Joomla и компонент магазина, без посторонних плагинов)
*

catsub

  • Захожу иногда
  • 74
  • 0 / 0
Уф, проблема решена. Да, она была в роутере. Точнее в двух роутерах - в компонентах hikashop и в sp page builder. sivers, после того, как подправила метод parse также и в sp page builder, то есть в сумме правила два файла, сервер стал отдавать правильные ответы.

Всем большое спасибо за помощь!
*

sivers

  • Живу я здесь
  • 2465
  • 336 / 0
Уф, проблема решена.
С чем Вас и поздравляю! )
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Отменить разбиение на страницы

Автор willart

Ответов: 9
Просмотров: 139
Последний ответ 27.04.2024, 21:10:43
от web1
Как убрать слово "ГЛАВНАЯ" с главной страницы?

Автор Северянин23

Ответов: 2
Просмотров: 367
Последний ответ 10.12.2023, 14:00:55
от Северянин23
Турбо-страницы и редактирование CSS

Автор Serebro2009

Ответов: 1
Просмотров: 271
Последний ответ 07.11.2023, 18:34:21
от Serebro2009
Некоторые страницы сайта дают жуткие ошибки

Автор Аня

Ответов: 12
Просмотров: 624
Последний ответ 21.04.2023, 12:11:04
от Аня
Проблема с отображением страницы 404

Автор web1

Ответов: 1
Просмотров: 303
Последний ответ 12.03.2023, 02:02:38
от web1