Всем привет!
В данный момент работаю над проектом по переносу рабочего интернет магазина Кемпинговая мебель МЕБЕК с самописного движка на Битрикс (пока на домене висит старый сайт), новый тестирую на mebek.gtalex.ru (ссылку не поставил специально, дабы поисковики не полезли).
Основная часть работ уже выполнена (движек, дизайн, вёрстка, отработал скриптик по переносу всего контента), а вот на редиректе я решил остановиться отдельно.
Итак, как заявит каждый SEO оптимизатор — важнейшая часть при смене движка, это 301 редирект со страничек которые участвовали в продвижении (да и вообще любых страничек которые были на сайте).
Для осуществления такого переноса, я все старые ID и CODE секций и элементов так же перенёс в поля инфоблока Битрикса.
Таким образом с детальных страниц товара вида
http://www.mebek.ru/13/1506/kacheli_sadovye_otdyx_3_r
необходимо сделать редирект на страницы вида (конечно же с ЧПУ вида …./код раздела/код продукции/)
http://mebek.ru/cat/kacheli-sadovye/kacheli_sadovye_otdyx_3_r/
И страниц категорий товара вида
http://www.mebek.ru/7/stoly-skladnye
на новый
http://www.mebek.ru/cat/stoly-skladnye/
Непосредственно, для переноса в urlrewrite.php добавляем правило
array(
"CONDITION" => "#^/\d*/#",
"RULE" => "",
"ID" => "mebek:catalog",
"PATH" => "/redirect301.php",
),
всё что, начинается с цифры — отправляем скрипту, который уже будет разбираться, что за страница пришла и редиректить куда нужно.
Код скрипта чуть ниже, в принципе там всё просто и понятно — определили страницу и отредиректили 301м кодом, единственное на что обращу внимание — это использование кэша (тоже думаю понятно зачем).
Проверить в работе получится, только при осуществлении перехода, либо вместо www.mebek.ru используем mebek.gtalex.ru
Исходник скрипта:
define('NR', "
\r\n");
define('ROOT', $_SERVER["DOCUMENT_ROOT"]);
define('HOST', $_SERVER["HTTP_HOST"]);
$url = $_SERVER["SCRIPT_URL"];
if (preg_match("!^\/(\d+)\/(\d+)/(.*?)$!",$url,$match)) {
require(ROOT."/bitrix/modules/main/include/prolog_before.php");
$obCache = new CPHPCache;
$lifeTime = 6*60*60; # 6 часов
$cacheID = 'redirect301.php.'.$match[1];
if($obCache->InitCache($lifeTime, $cacheID, "/")){
$vars = $obCache->GetVars();
$CODE = $vars["CODE"];
} else {
CModule::IncludeModule('iblock');
$IBLOCK_ID = 9;
if($obCache->StartDataCache()) {
$arFilter = array('IBLOCK_ID' => $IBLOCK_ID, 'EXTERNAL_ID' => $match[1]);
$rsSections = CIBlockSection::GetList(array(), $arFilter);
if ($arSection = $rsSections->Fetch()) {
$CODE = $arSection["CODE"];
}
$obCache->EndDataCache(array(
"CODE" => $CODE
));
}
}
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://'.HOST.'/cat/'.$CODE.'/'.$match[3].'/');
exit();
} elseif (preg_match("!^\/(\d+)\/(.*?)$!",$url,$match)) {
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://'.HOST.'/cat/'.$match[2].'/');
exit();
}
die();
?>