<? require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php"); ?> <div id="content-column-primary"> <?$APPLICATION->IncludeComponent( "bitrix:catalog.section", "comon", Array( "IBLOCK_TYPE" => "catalog", "IBLOCK_ID" => "14", "SECTION_ID" => "58", "SECTION_CODE" => $_REQUEST["SECTION_CODE"], "SECTION_USER_FIELDS" => array(0=>"",1=>"",), "ELEMENT_SORT_FIELD" => "sort", "ELEMENT_SORT_ORDER" => "asc", "FILTER_NAME" => "arrFilter", "INCLUDE_SUBSECTIONS" => "Y", "SHOW_ALL_WO_SECTION" => "Y", "PAGE_ELEMENT_COUNT" => "9", "LINE_ELEMENT_COUNT" => "3", "PROPERTY_CODE" => array(0=>"price",1=>"type",2=>"",), "SECTION_URL" => "/catalog/#SECTION_CODE#/", "DETAIL_URL" => "/catalog/#SECTION_CODE#/#ID#/", "BASKET_URL" => "/cart/", "ACTION_VARIABLE" => "action", "PRODUCT_ID_VARIABLE" => "id", "PRODUCT_QUANTITY_VARIABLE" => "quantity", "PRODUCT_PROPS_VARIABLE" => "prop", "SECTION_ID_VARIABLE" => "SECTION_ID", "AJAX_MODE" => "N", "AJAX_OPTION_JUMP" => "N", "AJAX_OPTION_STYLE" => "N", "AJAX_OPTION_HISTORY" => "N", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000", "CACHE_GROUPS" => "N", "META_KEYWORDS" => "-", "META_DESCRIPTION" => "-", "BROWSER_TITLE" => "NAME", "ADD_SECTIONS_CHAIN" => "N", "DISPLAY_COMPARE" => "N", "SET_TITLE" => "Y", "SET_STATUS_404" => "N", "CACHE_FILTER" => "N", "PRICE_CODE" => array(), "USE_PRICE_COUNT" => "N", "SHOW_PRICE_COUNT" => "1", "PRICE_VAT_INCLUDE" => "Y", "PRODUCT_PROPERTIES" => array(), "USE_PRODUCT_QUANTITY" => "N", "DISPLAY_TOP_PAGER" => "N", "DISPLAY_BOTTOM_PAGER" => "Y", "PAGER_TITLE" => "Товары", "PAGER_SHOW_ALWAYS" => "N", "PAGER_TEMPLATE" => "common", "PAGER_DESC_NUMBERING" => "N", "PAGER_DESC_NUMBERING_CACHE_TIME" => "36000", "PAGER_SHOW_ALL" => "N", "AJAX_OPTION_ADDITIONAL" => "" ) );?> <table class="mceItemTable" st yle="width: 100%" border="0"><tbody><tr><td> Поделись с друзьями: <sc ript type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></sc ript> <div class="yashare-auto-init" data-yashareL10n="ru" data-yashareType="none" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,lj,friendfeed,moikrug,gplus"></div> <br mce_bogus="1"></td><td><br mce_bogus="1"></td><td scope="" st yle="width: 200px;" dir="" id="" align="" lang="" valign=""> Вконтакте: <!-- Put this div tag to the place, where the Like block will be --> <div id="vk_like"></div> <sc ript type="text/javascript"> VK.Widgets.Like("vk_like", {type: "button", height: 20}); </sc ript> <br mce_bogus="1"></td></tr> <tr><td colspan="3" rowspan="1"> <div class="fb-like" data-href="http://www.shar-papier.ru" data-send="true" data-width="700" data-show-faces="false" data-font="arial"></div> <br></td></tr> </tbody> </table> <?php if($APPLICATION->GetTitle() == "") { $APPLICATION->SetTitle("Интернет-магазин"); } else { $APPLICATION->AddChainItem("Интернет-магазин", "/catalog/"); } ?></div> <?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>
Битрикс отдаёт 404 страницу при переходе в подкаталог. Подкаталог имеет элементы, которые тоже отдают 404. Тем не менее список элементов каталога отображается без нареканий. Шаблон каталога стандартный.
$APPLICATION->IncludeComponent(
"bitrix:catalog",
"the_catalog",
array(
"IBLOCK_TYPE" => "content",
"IBLOCK_ID" => "25",
"BASKET_URL" => "/personal/basket.php",
"ACTION_VARIABLE" => "action",
"PRODUCT_ID_VARIABLE" => "id",
"SECTION_ID_VARIABLE" => "SECTION_ID",
"PRODUCT_QUANTITY_VARIABLE" => "quantity",
"SEF_MODE" => "Y",
"SEF_FOLDER" => "/the_catalog/",
"AJAX_MODE" => "N",
"AJAX_OPTION_JUMP" => "N",
"AJAX_OPTION_STYLE" => "Y",
"AJAX_OPTION_HISTORY" => "N",
"CACHE_TYPE" => "A",
"CACHE_TIME" => "36000000",
"CACHE_FILTER" => "N",
"CACHE_GROUPS" => "Y",
"SET_TITLE" => "N",
"SET_STATUS_404" => "Y",
"USE_ELEMENT_COUNTER" => "Y",
"USE_FILTER" => "Y",
"FILTER_NAME" => "",
"FILTER_FIELD_CODE" => array(
0 => "",
1 => "",
),
"FILTER_PROPERTY_CODE" => array(
0 => "",
1 => "SIZE",
2 => "",
),
"FILTER_PRICE_CODE" => array(
),
"USE_REVIEW" => "N",
"USE_COMPARE" => "Y",
"PRICE_CODE" => array(
0 => "RUB",
),
"COMPARE_NAME" => "CATALOG_COMPARE_LIST",
"COMPARE_FIELD_CODE" => array(
0 => "",
1 => "",
),
"COMPARE_PROPERTY_CODE" => array(
0 => "PRODUCER",
1 => "COMPLEXITY",
2 => "TYPE",
3 => "SIZE",
4 => "",
),
"COMPARE_ELEMENT_SORT_FIELD" => "sort",
"COMPARE_ELEMENT_SORT_ORDER" => "asc",
"USE_PRICE_COUNT" => "Y",
"SHOW_PRICE_COUNT" => "1",
"PRICE_VAT_INCLUDE" => "Y",
"PRICE_VAT_SHOW_VALUE" => "N",
"USE_PRODUCT_QUANTITY" => "N",
"CONVERT_CURRENCY" => "N",
"SHOW_TOP_ELEMENTS" => "N",
"SECTION_COUNT_ELEMENTS" => "Y",
"SECTION_TOP_DEPTH" => "2",
"PAGE_ELEMENT_COUNT" => "12",
"LINE_ELEMENT_COUNT" => "6",
"ELEMENT_SORT_FIELD" => "CATALOG_AVAILABLE",
"ELEMENT_SORT_ORDER" => "DESC",
"ELEMENT_SORT_FIELD2" => $_REQUEST["by"],
"ELEMENT_SORT_ORDER2" => $_REQUEST["order"],
"LIST_PROPERTY_CODE" => array(
0 => "ARTICUL",
1 => "SET",
2 => "SIZE2",
3 => "TYPE",
4 => "SIZE",
5 => "",
),
"INCLUDE_SUBSECTIONS" => "Y",
"LIST_META_KEYWORDS" => "-",
"LIST_META_DESCRIPTION" => "-",
"LIST_BROWSER_TITLE" => "-",
"DETAIL_PROPERTY_CODE" => array(
0 => "ARTICUL",
1 => "COMPLEXITY",
2 => "TYPE",
3 => "SIZE",
4 => "COMPLECT",
5 => "MARKA",
6 => "",
),
"DETAIL_META_KEYWORDS" => "-",
"DETAIL_META_DESCRIPTION" => "-",
"DETAIL_BROWSER_TITLE" => "-",
"LINK_IBLOCK_TYPE" => "",
"LINK_IBLOCK_ID" => "",
"LINK_PROPERTY_SID" => "",
"LINK_ELEMENTS_URL" => "link.php?PARENT_ELEMENT_ID=#ELEMENT_ID#",
"USE_ALSO_BUY" => "N",
"USE_STORE" => "N",
"DISPLAY_TOP_PAGER" => "Y",
"DISPLAY_BOTTOM_PAGER" => "Y",
"PAGER_TITLE" => "",
"PAGER_SHOW_ALWAYS" => "N",
"PAGER_TEMPLATE" => "catalog",
"PAGER_DESC_NUMBERING" => "N",
"PAGER_DESC_NUMBERING_CACHE_TIME" => "36000",
"PAGER_SHOW_ALL" => "Y",
"AJAX_OPTION_ADDITIONAL" => "",
"HIDE_NOT_AVAILABLE" => "N",
"ADD_SECTIONS_CHAIN" => "Y",
"ADD_ELEMENT_CHAIN" => "N",
"DISPLAY_ELEMENT_SELECT_BOX" => "N",
"ADD_PROPERTIES_TO_BASKET" => "Y",
"PRODUCT_PROPS_VARIABLE" => "prop",
"PARTIAL_PRODUCT_PROPERTIES" => "N",
"PRODUCT_PROPERTIES" => array(
),
"DETAIL_CHECK_SECTION_ID_VARIABLE" => "N",
"SEF_URL_TEMPLATES" => array(
"sections" => "",
"section" => "#SECTION_CODE_PATH#/",
"element" => "#SECTION_CODE#/#ELEMENT_CODE#/",
"compare" => "compare.php?action=#ACTION_CODE#",
),
"VARIABLE_ALIASES" => array(
"compare" => array(
"ACTION_CODE" => "action",
),
)
),
false
);
Оглавление
- Проверка сайта и настройка 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-й заголовок, что означает — страница не существует, а следовательно поисковик не проиндексирует ненужные адреса и в поиск попадут только реально существующие документы вашего сайта. Теперь точно всё. Желаю удачи!
Очень важным вопросом при SEO продвижении сайта является 404 статус несуществующих страниц сайта.
В Битрикс при заходе на страницы, где не размещен комплексный компонент, ошибка 404 отдается нормально. А вот где есть комплексный компонент, есть проблемы, поэтому нужно знать как правильно сделать настройки.
Первым делом в настройках комплексного компонента bitrx:news или bitrix:catalog устанавливаем отдачу 404 ошибки:
Далее нужно правильно настроить ЧПУ инфоблока из которого выводится контент и включить поддержку ЧПУ в комплексном компоненте. Будем рассматривать компонент bitrix:catalog.
Установим следующие настройки в инфоблоке и тоже самое зададим в настройках компонента.
Если для вывода раздела использовать шаблон #SECTION_CODE#, то получим следующее:
/catalog/section/element/ - элемент. 200 OK /catalog/section/element123/ - элемент. ошибка 404 /catalog/section123/element/ - элемент. 200 OK
/catalog/section/ - раздел. 200 OK
/catalog/section123/ - раздел. 200 OK
Поэтому правильным вариантом будет использовать шаблон #SECTION_CODE_PATH#.
С этим шаблоном получим следующее:
/catalog/section/element/ - элемент. 200 OK /catalog/section/element123/ - элемент. ошибка 404 /catalog/section123/element/ - элемент. ошибка 404 /catalog/section/ - раздел. 200 OK /catalog/section123/ - раздел. ошибка 404
Результат отличный. Делаем вывод, что лучше использовать #SECTION_CODE_PATH#. Однако при использовании компонента bitrix:news, даже с такой настройкой будут некоторые неисправимые проблемы:
/news/section/element/ - элемент. 200 OK /news/section/element123/ - элемент. ошибка 404
/news/section123/element/ - элемент. 200 OK
/news/section/ - раздел. 200 OK
/news/section123/ - раздел. ошибка 404
2021.08.27
Если у вас настроен вывод товаров из вложенных разделов каталога в разделах верхнего уровня или непосредственно в корне каталога и при переходе в карточку товара у вас возникает ошибка 404, то зайдите в параметры компонента каталога, найдите и активируйте чек-бокс «Использовать основной раздел для показа элемента«
«Экстренное» подключение просмотренных товаров
Fix счетчика товара (BX 23.300)
Наши решения
IntecUniverse — интернет-магазин с конструктором дизайна
31 430 руб.
44 900 руб.
Интернет-магазин на редакции Старт с конструктором дизайна — IntecUniverse LITE
29 925 руб.
39 900 руб.
INTEC.Food — магазин доставки еды, суши, пиццы с корзиной и оплатой. Сайт для ресторанов и кафе
29 925 руб.
39 900 руб.
INTEC.Garderob — интернет-магазин одежды, обуви, сумок, нижнего белья и аксессуаров
29 925 руб.
39 900 руб.
INTEC. SEO — модуль поисковой оптимизации: seo — фильтр, генерация сео — текстов, H1, мета-тегов
11 175 руб.
14 900 руб.
INTEC Конструктор сайтов — визуальный редактор структуры и дизайна
4 950 руб.
9 900 руб.
INTEC: Мультирегиональность — региональная сеть вашего сайта с продвижением в поисковиках
7 450 руб.
14 900 руб.