Это прямо как в том анекдоте: чем бы зубы не чистил, как бы рот не полоскал, а этот неповторимый устойчивый вкус все возвращается и возвращается. Дворники двигал? Двигал. Протекторы пинал? Пинал. Капот открывал? Открывал. А раздел все равно не найден. Мы перечислим причины, чаще других вызывающие эту ошибку.
1. Инфоблоку назначены права «Чтение» для всех пользователей?
Если нет, выставьте права.
2. Папке раздела назначены права «Чтение» для всех пользователей?
Если нет, выставьте права.
3. В файле раздела index.php назначен верный номер инфоблока?
Проверьте значение переменной «IBLOCK_ID». Установите верное значение.
4. Инфоблок содержит активные элементы (записи)?
Если нет, создайте или активируйте элементы инфоблока.
5. ЧПУ включен?
Если да, то настройте пути инфоблока примерно так:
URL страницы информационного блока: #SITE_DIR#/символьный код инфоблока
URL страницы раздела: #SITE_DIR#/символьный код инфоблока /#SECTION_CODE_PATH#/
URL страницы детального просмотра: #SITE_DIR#/символьный код инфоблока /#SECTION_CODE_PATH#/#ELEMENT_CODE#/
Обратите внимание, что символьный код инфоблока должен совпадать с именем папки раздела.
6. Правило обработки адресов настроено?
Найдите по адресу Рабочий стол -> Настройки -> Настройки продукта -> Обработка адресов -> Правила обработки
Правило, содержащую строку с символьным кодом инфоблока. Оно должно иметь вид:
Условие: #^/символьный код иноблока/#
Компонент: bitrix:catalog
Файл: /имя папки раздела/index.php
Напомним, что символьный код инфоблока должен совпадать с именем папки раздела.
Если правила нет или оно имеет другой вид, создайте или отредактируйте его.
——————-
Спасибо за внимание!
Читайте свежий выпуск «Кладовки программиста» каждый день!
Назад в раздел
Оглавление
- Проверка сайта и настройка 404-й страницы
- Ошибка элемент/раздел не найден
- Оформляем 404-ю страницу
Не пропусти свежие посты, подпишись:
Вы наверняка сталкивались с проблемой когда при обращении к несуществующему адресу в каталоге товаров или в разделе новости, вместо 404-й страницы получали ответ «не найден раздел или элемент» при этом серверу в заголовка отдавался статутс 200 ok а не 404 not found. Это не правильно, т.к. поисковик может проиндексировать пустые страницы которые впоследствии повысят количество отказов при заходе реальных посетителей на сайт. И так почему так происходит и как этого избежать.
В первую очередь нам нужно проверить наличие некоторых фалов и настроек на сайте.
Во-первых проверим наличие файла 404.php который должен лежать в корне вашего сайта. Если его нет, можете его создать с таким содержимым:
<?
include_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/urlrewrite.php');
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404","Y");
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("404 Not Found");
$APPLICATION->IncludeComponent("bitrix:main.map", ".default", Array(
"LEVEL" => "3",
"COL_NUM" => "2",
"SHOW_DESCRIPTION" => "Y",
"SET_TITLE" => "Y",
"CACHE_TIME" => "3600"
)
);
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Ключевыми в этом файле являются строки:
<?
CHTTP::SetStatus("404 Not Found");
@define("ERROR_404", "Y");
Возможно у вас есть сам файл, но отсутствуют эти строки, что и приводит к ошибке в работе 404-й.
Во-вторых, проверьте файл .htaccess (если он поддерживается вашим сервером), в нём должна присутствовать такая директива:
ErrorDocument 404 /404.php
Теперь перейдите к настройкам вашего компонента (обычно это bitrix.catalog или bitrix.news), блоке «настройки 404 ошибки» отметьте галочку «Устанавливать статус 404» (название галочки может отличаться в компонентах, в некоторых она называется «Устанавливать статус 404, если не найдены элемент или раздел:»).
Затем в файл /bitrix/php_interface/init.php (или /local/php_interface/init.php) добавьте следующий код:
<?
AddEventHandler("main", "OnEpilog", "error_page");
function error_page()
{
$page_404 = "/404.php";
GLOBAL $APPLICATION;
if(strpos($APPLICATION->GetCurPage(), $page_404) === false && defined("ERROR_404") && ERROR_404 == "Y")
{
$APPLICATION->RestartBuffer();
CHTTP::SetStatus("404 Not Found");
include($_SERVER["DOCUMENT_ROOT"].SITE_TEMPLATE_PATH."/header.php");
include($_SERVER["DOCUMENT_ROOT"].$page_404);
include($_SERVER["DOCUMENT_ROOT"].SITE_TEMPLATE_PATH."/footer.php");
die();
}
}
Этим кодом, мы добавляем в OnEpilog свой обработчик события, который считывает установленный компонентом параметр ERROR_404 и запускает перегрузку буфера подключая файл 404-й страницы. Обычно это 404.php лежащий в корне сайта. Хотя при соответствующем оформлении 404-й страницы, можно (даже будет лучше) не подключать файлы header.php и footer.php.
Если после всех манипуляций 404-я страница не отображается по несуществующему URL, следует проверить файл urlrewrite.php отвечающий за обработку ЧПУ адресов. Иногда, например при размещении компонента умного фильтhа (catalog.smart.filter) на главной странице, в urlrewrite.php прописывается условие, что-то вроде этого:
<?
array(
"CONDITION" => "#^/([a-zA-Z]+)/([0-9]+)/#",
"RULE" => "",
"ID" => "bitrix:catalog.section",
"PATH" => "/index.php",
),
Обычно в CONDITION — создаётся некорректное регулярное выражение, которое срабатывает на все страницы, в том числе и на не существующие и вместо 404-й страницы, сайт выдаёт что-то ещё, обычно страницу или компонент указанный в PATH этого правила. Если такое правило есть, его необходимо скорректировать или удалить из urlrewrite.php.
Ошибка элемент/раздел не найден
Такая ошибка возникает когда шаблоны ЧПУ в инфоблоке и в настройках компонента не совпадают. Или же пользователь ввёл некорректный URL близкий к шаблону. Проверьте настройки инфоблока:
И настройки ЧПУ в компоненте (обычно комплексном):
Так же следует проверить соответствие шаблона и свойств элемента. Например в примере в шаблон URL детальной страницы входит символьный код элемента #ELEMENT_CODE#, если у элемента нет символьного кода, вы получите ошибку. Но правильнее конечно, не показывать такие сообщения (элемент не найден, раздел не найден), компонент должен установить статус 404 и должен сработать скрипт показывающий пользователю /404.php с соответствующим ответом в заголовке. В противном случае, могут быть проблемы с SEO сайта.
Оформляем 404-ю страницу
По умолчанию 404.php в 1С Битрикс содержит компонент карты сайта и выводит список ссылок взятый из файлов формирования меню. При этом на странице так же остаётся полноценная шапка и подвал сайта (отрабатывают header.php и footer.php шаблона), что на мой взгляд не правильно. Кстати сеошники из компании Кокос, с которыми мне приходилось сталкиваться, так же не рекомендовали выводить шапку и подвал с полноценной навигацией по сайту на 404-й странице.
На мой взгляд 404-я должна говорить пользователю что он всё ещё на том же сайте где и был секунду назад, отвечать на вопрос почему он здесь и что делать дальше и отдавать соответствующие заголовки поисковому роботу.
И так давайте выведем 404-ю страницу битрикс без шапки и подвала, но при этом подтянем ядро системы, чтобы мы могли подключить стили шаблона по средствам константы SITE_TEMPLATE_PATH. Убираем всё лишнее, подключаем ядро, получаем такой файл:
<?
//Подключаем ядро битрикса без шапки
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php");
//Устанавливаем необходимые заголовки
CHTTP::SetStatus("404 Not Found"); @define("ERROR_404","Y");
Чтобы посетитель не подумал что он покинул ваш сайт, стили оформления 404-й страницы должны быть такими же как и на всём сайте (заголовки, шрифты, цвета, иконки, картинки). Обязательно (минимально) на этой странице должен быть логотип.
Я люблю когда сообщения об ошибках читаются сразу, поэтому пишу их большими шрифтами, например Open Sans Condensed, не мельчите и объясняйте пользователю куда он попал и что ему дальше делать (вернуться на главную страницу, сделать запрос в форме поиска, в конце концов позвонить или написать вам). У меня получилась такая страничка:
<? require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_before.php"); //Подключаем ядро битрикса без шапки CHTTP::SetStatus("404 Not Found"); //Устанавливаем необходимые заголовки @define("ERROR_404","Y"); ?>
<link href='https://fonts.googleapis.com/css?family=Open+Sans+Condensed:300,300italic,700|Arimo:400,400italic,700,700italic|Noto+Sans:400,400italic,700,700italic&subset=latin,cyrillic-ext' rel='stylesheet' type='text/css'>
<div class="container404">
<img src="<?=SITE_TEMPLATE_PATH;?>/images/logo.jpg" alt="Название сайта">
<span class="title404">404</span>
<span class="subtitle404">Страница не найдена</span>
<span class="description404">Возможно запрашиваемая вами страница была удалена или перемещена. Вернуться <a rel="nofollow" href="/">на главную</a>?</span>
<span class="contacts404">позвоните нам: <span class="phone404"> +7 (999) 000 - 00 - 00</span> или напишите на e-mail: <a target="_blank" href="mailto:example@mail.ru">example@mail.ru</a></span>
</div>
Добавим немного CSS стилей для полноты картины:
.container404 { text-align: center; width: 1200px; margin: 0 auto; margin-top: 100px;}
.container404 img { display: block; margin: 0 auto; margin-bottom: 50px; }
.container404 a { color: #F0A229; }
.container404 a:hover { text-decoration: none; }
.title404 { font-family: 'Open Sans Condensed', sans-serif; font-size: 60px; line-height: 80px; display: block; }
.subtitle404 { font-family: 'Open Sans Condensed', sans-serif; font-size: 40px; line-height: 60px; display: block; }
.description404 { font-family: 'Open Sans Condensed', sans-serif; font-size: 30px; line-height: 40px; display: block;}
.contacts404 { margin:0 auto; width: 800px; padding: 10px 0px 100px 0px; font-family: 'Open Sans Condensed', sans-serif; font-size: 30px; line-height: 40px; }
.phone404 { font-weight: bold; }
Вроде бы всё. Ах да чуть не забыл! Нужно проверить всё ли правильно отдаётся поисковому роботу. Для этого перейдите на сайт, вызовете консоль разработчика (обычно клавиша F12 или пункт в меню инструментов браузера «инструменты разработчика» или что-то подобное), перейдите на вкладку Сеть/Network введите адрес несуществующей страницы и посмотрите какой ответ вернёт сервер (вкладка Status):
Как видите всё в порядке, сервер вернул 404-й заголовок, что означает — страница не существует, а следовательно поисковик не проиндексирует ненужные адреса и в поиск попадут только реально существующие документы вашего сайта. Теперь точно всё. Желаю удачи!
Как починить «раздел не найден» и «Неверный информационный блок» в битрикс?
Попробовал установить шаблон матильды и интекс универс. Поставил ядро. В итоге вот так выглядит у меня сайт, как на картинке.:
Я конечно не программист 1С и нефига не понимаю, в чем тут проблема. Подскажите, это отсутствуют какие-то модули или это какие-то ошибки, почему не отображается нормально шаблон?
-
Вопрос заданболее трёх лет назад
-
3410 просмотров
Пригласить эксперта
Вам необходимо проверить настройки компонентов и указать в них верные инфоблоки. Для этого в режиме правки наведите курсор на блок с компонентом, появится плашка с шестеренкой (видно на скрине). Нажмите на нее и откроются настройки компонента. В частности для фотогалереи должен быть соответствующий инфоблок.
Надо привязать инфоблок к нужному сайту
-
Показать ещё
Загружается…
04 июн. 2023, в 16:44
30000 руб./за проект
04 июн. 2023, в 16:33
2500 руб./за проект
04 июн. 2023, в 16:13
2000 руб./за проект
Минуточку внимания
ID статьи: 15320, создана 04 сен 2018
Ошибка 404 выдается, если не найден раздел/подраздел или страница/инфоблок, на который ссылается данный пункт меню (раздел). Привязка должна быть как со стороны раздела (к странице/инфоблоку):
(пример)
так и со стороны инфоблока/страницы (к узлу структуры):
в правилах много лишних условий… И не понятна структура….
У вас, кроме того, кастомизированный компонент, возможно в нем всю логику перепахали — тогда помочь вам вообще возможно только заглянув во внутрь.
Потому ниже на случай если этот компонент сделан в идеологии битрикс.
Если у вас каталог в одном инфоблоке. То вам необходимо одно единственное правило
#^/catalog/# eyeness:catalog /catalog/index.php И в сочетании с настройками ИБ и настройкми компонента на страницы — это правило заменяет все ваши относящиеся к каталогу….
Если же у вас несколько инфоблоков. И разведены в разные физиские каталоги файловой системы. то и правила стройте соответсвующие
#^/catalog/[подкаталог_файловой_системы]# eyeness:catalog /catalog/[подкаталог_файловой_системы]/index.php
Условие это, по сути регулярное выражение применяемое к URL… подошло значит передаем управление указанному дальше файлу….
Сообщение от Butadiene
Далее по сабжу: я вообще конечно ожидал от ответов что-то более конкретное, нежели «у вас всё неправильно сделало». Сделано то может и не правильно, но оно работает, и нужно, чтобы работал новый раздел, который работать отказывается.
Однажды такой подход приводит к переполнению некой критической массы и загибанию проекта… Тем более трудно подсказать «как поставить еще один костыль» в проекте который реализован на костылях.. Тут надо видеть что внутри… т.к. ответ по сути не может быть стандартным.
В общем если вам нужно помочь поставить еще один костыль — я пас. Если желание привести проект в порядок… попробвать можно….. но все может «разрушить» компонент eyeness:catalog. Если это вообще работа того самого «разработчика» который устроил такое в правилах обработки URL…. может оказаться все плохо…. И поможет только привлечение специалиста с предоставлением доступа.
Добавлено через 2 минуты
Можно попробовать начать с ответов на вопросы:
1. В скольких инфоблоках хранятся товары?
2. Какой шаблон URL настроен у этого типа инфоблока (или этих типов инфоблоков)
3. Физический каталог файловой структуры catalog имеет подкаталоги?