Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Проблема 404 редиректа

00 голосов
6
Здравствуйте!

У нас довольно старенькая версия битрикса "1С-Битрикс: Управление сайтом 8.0.5".
Возникла проблема следующего характера, не обрабатывается 404 редирект например когда мы находимся в каталоге, для примера: /catalog/dfg/ - не будет ошибкой, также не будет ошибкой и без слеша на конце...

В .htaccess прописано следующее:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[0-9a-zA-Z_/.-]+\.php$ 404.php
ErrorDocument 404 /404.php

Т.е. вроде бы все ок и должен перенаправлять, такое чувство, что проблема в том, что работает ЧПУ при этом.
Как решить проблему, подскажите пожалуйста?

P.S. При этом обработка ошибки идет например если адрес просто типа site.ru/dfdgd/
спросил 29 Сен, 13 от superher (260 баллов)

6 Ответы

00 голосов
Ну так у вас наверняка и срабатывают правила ЧПУ, на подобие /catalog/SECTION_ID/ или /catalog/SECTION_CODE/, если там компонент из серии catalog или news лежит, просто он раздел или элемент найти не может, ставит статус 404 если галочка стоит в параметрах, но на вашу 404 страницу не перенаправит.

помнится я делал проверку в header.php на наличие раздела или элемента для пути /catalog/ - это первый вариант. И второй -кастомизировать компоненты catalog.element, catalog.section и там где устанавливается статус 404 подключать свой файл 404.php.

Оба варианта мне не нравятся.

Если кто предложит лучшее решение, буду тоже благодарен! даже плюсик поставлю :)
ответил 10 Окт, 13 от Poleolog (1,240 баллов)
00 голосов
Свой файл 404 у меня подключен, это не проблема.

А вот по поводу разбора структуры - есть примеры живые? Был бы премного благодарен увидеть....

P.S. Очень удивляюсь почему не продумано это битриксом... :?:
ответил 10 Янв, 14 от superher (260 баллов)
00 голосов
Люююю-дииии((((
ответил 28 Апр, 14 от superher (260 баллов)
00 голосов
Цитата
mihailru пишет:
Свой файл 404 у меня подключен, это не проблема.


я имел ввиду подключить его редиректом в компоненте.

тоесть в component.php компонента catalog.element и catalog.section

заменить все вхождения

Код
if($arParams["SET_STATUS_404"]==="Y")
      CHTTP::SetStatus("404 Not Found");


на

Код
if($arParams["SET_STATUS_404"]==="Y")
      LocalRedirect("/путь_к_файлу_404.php");


но такое перенаправление не сохранит ссылку в адресной строке браузера.

для сохранения ссылки можно сделать не LocalRedirect, а require('...'), но тогда нужен отдельный файл 404.php без подключения хидера и футера. Или же убивать их как это делается в компоненте rss.out:
Код
      $APPLICATION->RestartBuffer();
ответил 23 Авг, 14 от Poleolog (1,240 баллов)
00 голосов
Андрей, человеческое Вам спасибо, что пытаетесь помочь!

Но у меня в этих компонентах нет вообще таких строк, есть только такие:
$this->AbortResultCache();
ShowError(GetMessage("CATALOG_SECTION_NOT_FOUND"));
@define("ERROR_404", "Y");

Как быть?
Пытался поподставлять методом тыка-результата нет.
ответил 29 Дек, 14 от superher (260 баллов)
00 голосов
да вот перед этим можно:
Код
ShowError(GetMessage("CATALOG_SECTION_NOT_FOUND")); 


а у вас вообще сообщение выводится "раздел не найден" или "элемент не найден" ?
ответил 17 Апр, 15 от Poleolog (1,240 баллов)

Похожие вопросы

0 голосов
4 ответов
спросил 07 Янв, 14 от TalisSa (100 баллов)
0 голосов
4 ответов
спросил 27 Дек, 13 от Snezhka (2,240 баллов)
0 голосов
1 ответ
спросил 13 Фев, 14 от JIocb2009 (100 баллов)
0 голосов
4 ответов
спросил 25 Янв, 14 от Persea (100 баллов)