Редирект старых url на новые ЧПУ url в bitrix

Задача: сделать редирект со старых ссылок на новости вида novosti.php?ELEMENT_ID=87 на новые, с использованием символьных кодов, вида /news/normalnaya-novost.html

Предполагается, что новый раздел новостей уже создан и доступен по адресу news с настроенным ЧПУ для самих новостей.

Решение: размещаем, следующий код в старом файле новостей novosti.php

if((int)$_GET['ELEMENT_ID'] > 0 and CModule::IncludeModule('iblock')){
    $arElements = array();

    $arSelect = array("DETAIL_PAGE_URL");
    $arFilter = array("IBLOCK_ID" => 5, "IBLOCK_TYPE" => 'news', 'ID' => (int)$_GET['ELEMENT_ID']);

    $dbElements = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect);;
    $dbElements->SetUrlTemplates('/news/#ELEMENT_CODE#.html');
    while ($arElement = $dbElements->GetNext()) {
        header("HTTP/1.1 301 Moved Permanently");
        header("Location: ". $arElement['DETAIL_PAGE_URL']);        
        break;
    }
    exit;
}

header("HTTP/1.1 301 Moved Permanently");
header("Location: /news/");
exit();

где «IBLOCK_ID» => 5 — id информационного блока (у меня 5), «IBLOCK_TYPE» => ‘news’ — тип информационного блока (у меня news).

Таким же образом можно прописать редиректы для других информационных блоков, меняя значения на свои. Теперь при заходе на старый адрес novosti.php?ELEMENT_ID=87 пользователь будет переадресован на новый ЧПУ адрес этой новости.

This entry was posted in Bitrix, Php and tagged , , . Bookmark the permalink.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*