Убираем дублирование страниц 1С-Битрикс

Убираем дубли страниц в комплексном компоненте bitrix.catalog при многоуровневом древе
Проблема обнаружилась внезапно и не так давно - мы решили изменить структуру разделов для более понятной и наглядной группировки наших услуг. И выяснился неприятнейший момент - при установке канонической ссылки и адреса детальной страницы по маске #SITE_DIR#/shop/#SECTION_CODE_PATH#/#ELEMENT_CODE#/ любой товар можно открыть как по основному url, так и по урлу его раздела, то есть маске #SITE_DIR#/shop/#SECTION_CODE#/#ELEMENT_CODE#/
Поскольку проблема совершенно не явная, а последствия от неё "на лицо" (каталог переиндексировался Яндексом за четыре дня) было принято решение написать краткий фикс данного бага.
//редирект для удаления дублей => /section1/element/ or /section2/element/ redirect to /section1/section2/element/

$res = CIBlockElement::GetByID($arResult['ID']);
if($ar = $res->GetNext()) {
	$good_url="/".$ar['CODE']."/";

	if ($ar['IBLOCK_SECTION_ID']) {
		$res = CIBlockSection::GetByID($ar['IBLOCK_SECTION_ID']);
		if ($ar2 = $res->GetNext()) {
			$good_url="/".$ar2['CODE'].$good_url;
			if ($ar2['IBLOCK_SECTION_ID']) {
				$res = CIBlockSection::GetByID($ar2['IBLOCK_SECTION_ID']);
				if ($ar3 = $res->GetNext())
					$good_url="/".$ar3['CODE'].$good_url;
			}
		}
	}
}
Данное решение позволяет решить проблемы с дублированием адресов 1С-Битрикс, вплоть до 3его уровня вложенности

Разработка. Модуль iblock