Работая с интернет-магазинами на 1c-bitrix, не первый раз сталкивался с данной проблемой. Заметил, что по ссылкам /catalog/sergy/2419/ и /catalog/obodki/2419/ открывается один и тот же товар. Как оказалось, комплексный компонент bitrix:catalog учитывает только id = 2419, открывая товар под этим id и не учитывая символьный код раздела sergy.
Полазив в интернете, понял, что эта проблема довольно часто встречается у разработчиков на битриксе. Поэтому решил выложить один из способов решения этой проблемы. Реализация несложная, выкладываю для того, чтобы вдруг кто-нибудь наткнулся на мою запись и понял, что достаточно решить проблему следующим способом:
<? $rsSections = CIBlockElement::GetElementGroups($arResult['ID'], true); //определяем раздел товара while($arSection = $rsSections->Fetch()) $arSections[] = $arSection["CODE"]; //собираем массив разделов с таким символьным кодом if(!in_array($arParams['SECTION_CODE'], $arSections)){ //перебираем массив, если такого раздела нет, выводим 404 @define("ERROR_404", "Y"); //добавляем константу if($arParams["SET_STATUS_404"]==="Y") CHTTP::SetStatus("404 Not Found"); //открываем 404 } ?>
Плюс еще на заметку: использование константы 404 для вызова страницы 404 =)