Бегло глянул код компонента, там вроде и нет проверки на существование раздела, который указан в ссылке. Страница генерируется на основе кода элемента.
У меня в result_modifier.php шаблона компонента детальной страницы товара есть такой код. Он подходит для моей задаче и у меня решает эту проблему. Можете им воспользоваться и подправить под себя, если нужно.
[CODE]if(intval($arResult["IBLOCK_SECTION_ID"]) > 0) // тут id реального родительского раздела элемента
{
$res = CIBlockSection::GetByID($arResult["IBLOCK_SECTION_ID"]); // ищем его в бд
if($arSection = $res->GetNext()) // если такой раздел есть
{
$arResult["REAL_SECTION"] = $arSection; // я для себя сохраняю инфу о разделе
// а тут проверка, что если код раздела, переданный в урл не совпадает с кодом раздела, полученного из бд, то сделаем редирект
if(!empty($arResult["REAL_SECTION"]['CODE']) && $arResult["REAL_SECTION"]['CODE'] !== $arParams["SECTION_CODE"])
LocalRedirect($arResult["REAL_SECTION"]['SECTION_PAGE_URL'].$arResult["CODE"].'/');
}
}[/CODE]
думаю, можно как-то правильнее это записать, но у меня тогда времени не было на поиски другого решения.